标签: kotlin-nothing

总是抛出异常的函数 - 具有块体的函数中需要一个“返回”表达式

为什么下面的代码是错误的?

fun alwaysThrow() {
    throw Error("Sorry")
}

fun checkNumber(arg: Int): Int {
    if (arg > 10) {
        return arg
    } 
    alwaysThrow()
}

fun main() {
    try {
        checkNumber(20)
    } catch (e: Error) {
        println("Error caught: ${e.message}")
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数checkNumber无法编译并出现错误:

具有块体的函数中需要“返回”表达式(“{...}”)

我不明白为什么,因为过去的任何事情都不会被执行alwaysThrow

有没有办法告诉编译器?

由于某种原因,这段代码确实可以编译:

fun checkNumber(arg: Int): Int{
    if (arg > 10) {
        return arg
    } 
    throw Error("Sorry")
}

fun main() {
    try {
        checkNumber(1)
    } catch (e: Error) {
        println("Error caught: ${e.message}")
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-nothing

5
推荐指数
1
解决办法
262
查看次数

标签 统计

kotlin ×1

kotlin-nothing ×1