為什麼要使用「例外處理」
例外處理(Exception Handling)是編寫健壯應用程式的重要部分。其主要目的是:
- 處理運行時錯誤:防止程式在遇到錯誤時崩潰,提供一種處理異常情況的方法。
- 提高程式的穩定性和健壯性:通過捕獲和處理異常,使程式能夠繼續執行或以可控方式結束。
- 提高程式的可讀性和可維護性:通過將錯誤處理邏輯與正常業務邏輯分開,使程式更易於理解和維護。
語法
Kotlin 的例外處理使用 try-catch
區塊來捕獲和處理異常。還可以使用 finally
區塊來執行無論是否發生異常都會執行的代碼。
try {範例:
// 可能拋出異常的代碼
} catch (e: ExceptionType) {
// 處理異常
} finally {
// 無論是否發生異常都會執行的代碼
}
fun main() {
try {
val result = 10 / 0 // 這裡會拋出 ArithmeticException
} catch (e: ArithmeticException) {
println("Cannot divide by zero: ${e.message}")
} finally {
println("This block is always executed")
}
}
常見異常類型
- ArithmeticException:算術錯誤,如除以零。
- NullPointerException:嘗試訪問 null 對象的成員。
- IndexOutOfBoundsException:下標越界。
- IllegalArgumentException:非法參數。
- IOException:I/O 錯誤。
- FileNotFoundException:文件未找到。
主動觸發異常訊息
可以使用 throw
關鍵字來主動拋出異常。
fun validateAge(age: Int) {
if (age < 18) {
throw IllegalArgumentException("Age must be at least 18")
}
}
fun main() {
try {
validateAge(15)
} catch (e: IllegalArgumentException) {
println("Exception caught: ${e.message}")
}
}
主動觸發用戶自定義異常訊息
可以定義自己的異常類別,繼承自 Exception
類或其子類。
class CustomException(message: String) : Exception(message)
fun validate(value: Int) {
if (value < 0) {
throw CustomException("Value cannot be negative")
}
}
fun main() {
try {
validate(-1)
} catch (e: CustomException) {
println("Custom exception caught: ${e.message}")
}
}