在 Kotlin 中,非空类型(Non-null types)可以避免空指针异常(NullPointerException)。为了处理异常,你可以使用以下方法:
- 使用安全调用操作符(?.):
当你不确定一个变量是否为空时,可以使用安全调用操作符。如果变量为空,表达式将返回 null,而不是抛出异常。
val nonNullString: String = "Hello, World!" val nullableString: String? = null val result = nonNullString.safeCall("Kotlin") { it.toUpperCase() } // result will be "KOLLIN" val nullableResult = nullableString.safeCall("Kotlin") { it.toUpperCase() } // nullableResult will be null
- 使用 Elvis 操作符(?:`):
Elvis 操作符允许你在变量为空时提供一个默认值。
val nonNullString: String = "Hello, World!" val nullableString: String? = null val result = nullableString?.let { it.toUpperCase() } ?: "Default value" // result will be "KOLLIN"
- 使用
requireNotNull()
函数:
requireNotNull()
函数用于检查一个非空引用是否为 null。如果为 null,它将抛出一个 IllegalArgumentException
。
val nonNullString: String = "Hello, World!" val nullableString: String? = null val result = requireNotNull(nullableString) { "Nullable string cannot be null" } // result will be "Hello, World!"
- 使用
try-catch
语句:
当你在代码中执行可能抛出异常的操作时,可以使用 try-catch
语句来捕获异常并进行处理。
fun riskyOperation(): String { // Some code that may throw an exception } val result = try { riskyOperation() } catch (e: Exception) { "An error occurred: ${e.message}" }
请注意,使用非空类型并不能完全消除空指针异常。你仍然需要谨慎处理可能的空值情况,并使用上述方法之一来处理异常。