Android Kotlin:当块作为最后一个语句时,是否可以抛出异常?
当函数中的块出现时,是否有可能抛出异常?我想这样写:Android Kotlin:当块作为最后一个语句时,是否可以抛出异常?,android,android-studio,kotlin,Android,Android Studio,Kotlin,当函数中的块出现时,是否有可能抛出异常?我想这样写: fun generateStatus(response: Response?, mode : Byte, deviceState : Int, timestamp: Long) : Status { return when { deviceState != 1 -> Status(null, timestamp, STATUS_NOT_READY, -1, null)
fun generateStatus(response: Response?, mode : Byte, deviceState : Int, timestamp: Long) : Status {
return when {
deviceState != 1 -> Status(null, timestamp, STATUS_NOT_READY, -1, null)
mode != 0 -> Status(null, timestamp, STATUS_CPU_OFF_OR_IN_BOOTLOADER, -1, null)
response == null -> Status(null, timestamp, STATUS_NO_INFORMATION, -1, null)
else -> {
...
if(response.operationID != STATUS)
throw IllegalArgumentException("Wrong status response operation id!")
}
}
}
但IDE(AndroidStudio)显示错误:类型不匹配、必需状态、已找到单元 如果
else
块中的所有分支都抛出一个异常,那么它将起作用,但是在条件检查之后,您就有了异常,否则您的else
将返回Unit
。抛出一个异常或返回一个状态
。哦,我明白了,是我的错,对我来说,处理带有返回类型但没有返回关键字和IDE警告的表达式的时间和条件有点奇怪。对于java代码,Android Studio针对相同情况发出的警告将是“缺少返回语句”,但对于Kotlin,其中Unit是一种类型,否则brunch将返回Unit或Nothing(异常抛出)。只是被警告弄糊涂了。