为什么下面的代码是错误的?
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)