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(异常抛出)。只是被警告弄糊涂了。