首页 > 解决方案 > 为什么在运行以下代码时我没有收到带有消息“请不要为空”的运行时异常

问题描述

为什么我在运行以下代码时没有收到带有消息“请不要为空”的运行时异常:代码:

class Car(val name: String, col: String) {
    val fuel = 100
    var color = col
        set(value) {
            if (value.isBlank()) {
                throw RuntimeException("no empty, please")
            }
            field = value
        }
}
fun main() {
    var car = Car("Maruti", "")
    println("Your car ${car.name} is of ${car.color}")
}

标签: kotlingetter-setter

解决方案


在您的示例中,您直接初始化支持字段。这意味着不会调用任何setter。显然,这段代码会调用setter:

car.color = ""

init或者您可以在类的块内调用 setter Car

class Car(col: String) {
    ...
    init {
        color = col
    }
}

如果设置空颜色,将抛出 RuntimeException。


推荐阅读