在 Kotlin 中,非空類型(Non-null types)可以避免空指針異常(NullPointerException)。為了處理異常,你可以使用以下方法:
當(dāng)你不確定一個(gè)變量是否為空時(shí),可以使用安全調(diào)用操作符。如果變量為空,表達(dá)式將返回 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 操作符允許你在變量為空時(shí)提供一個(gè)默認(rèn)值。
val nonNullString: String = "Hello, World!"
val nullableString: String? = null
val result = nullableString?.let { it.toUpperCase() } ?: "Default value" // result will be "KOLLIN"
requireNotNull()
函數(shù):requireNotNull()
函數(shù)用于檢查一個(gè)非空引用是否為 null。如果為 null,它將拋出一個(gè) 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
語句:當(dāng)你在代碼中執(zhí)行可能拋出異常的操作時(shí),可以使用 try-catch
語句來捕獲異常并進(jìn)行處理。
fun riskyOperation(): String {
// Some code that may throw an exception
}
val result = try {
riskyOperation()
} catch (e: Exception) {
"An error occurred: ${e.message}"
}
請注意,使用非空類型并不能完全消除空指針異常。你仍然需要謹(jǐn)慎處理可能的空值情況,并使用上述方法之一來處理異常。