You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中Nothing类型推理疑问:省略返回类型为何识别为Unit

问题解答
  • 核心原因是Kotlin的类型推导规则限制:当函数体只有一个throw表达式时,虽然throw本身是Nothing类型,但如果省略函数返回类型,编译器会优先按照「无返回值函数」的默认规则推导为Unit——这是因为Nothing属于特殊的「底部类型」,编译器不会主动为省略返回类型的函数推导该类型,只会默认将无正常返回路径的函数归为Unit返回。

  • 解决方法很直接:必须显式声明返回类型为Nothing,不能省略。只有显式声明,编译器才会明确识别这个函数的语义是「永远抛出异常,不会返回任何值」,而非默认的无返回值(Unit)。

对比示例:

// 编译器推导为Unit,不符合预期
fun fail(message: String) {
    throw IllegalArgumentException(message)
}

// 正确声明,明确返回Nothing
fun fail(message: String): Nothing {
    throw IllegalArgumentException(message)
}

内容的提问来源于stack exchange,提问作者Alan Omar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:31:59