在 Kotlin 中處理異常

Kailash Vaviya 2023年1月30日 2022年6月21日
  1. Kotlin 中的異常概念
  2. 在 Kotlin 中處理未經檢查的異常
  3. 在 Kotlin 中建立自定義異常
  4. 在 Kotlin 中使用 @Throws 註釋處理異常
在 Kotlin 中處理異常

異常處理是大多數程式語言的基本概念。它有助於處理異常,以便程式碼執行沒有任何問題。

甚至 Kotlin 也允許使用 @Throws 註釋進行異常處理。本文將介紹如何使用 @Throws 註釋來處理 Kotlin 中的異常。

但在進入之前,讓我們先看看 Kotlin 中異常的基本概念。

Kotlin 中的異常概念

Kotlin 異常類似於 Java 異常。他們都是 Kotlin 中 Throwable 類的後代;但是,也有一些差異。

與 Java 不同,Kotlin 沒有任何檢查異常。因此,Kotlin 中只有未經檢查的或執行時異常。

此外,Kotlin 允許建立自定義異常。因此,我們可以編寫自己的異常處理程式碼來防止任何執行時錯誤。

在 Kotlin 中處理未經檢查的異常

如前所述,未經檢查的異常是在執行時發生的異常。所有 Java 未檢查異常,包括 ArithmeticExceptionNullPointerExceptionNumberFormatException 等,都是 Kotlin 中未檢查異常的示例。

我們可以使用 try-catch 塊和 finally 關鍵字在 Kotlin 中處理未經檢查的異常。

這是演示未經檢查的異常的示例程式碼。

fun main(args: Array<String>) {

    try {
        val i:Int = 12;
        val v:String = "Hello!";
        v.toInt();
   }
   catch(e:Exception) {
        e.printStackTrace();
   }

   finally {
        println("This is an example of unchecked exception handling using the try-catch block.");
   }

}

輸出:

Kotlin 中未經檢查的異常示例

點選這裡檢視示例程式碼的演示。

在 Kotlin 中建立自定義異常

我們還可以使用 throw 關鍵字在 Kotlin 中建立自定義異常。讓我們建立一個宣告整數變數的程式碼。

然後我們將檢查該數字是否等於或大於 18。如果是,我們將列印一條訊息,說`你有資格投票。``;否則,我們將丟擲自定義錯誤訊息。

fun main(args: Array<String>) {
    val v:Int;
    v = 16;
    if(v >= 18)
    {
        println("Welcome!! You are eligible to vote.")
    }

    else
    {
        //throwing custom exception using the throw keyword
        throw customExceptionExample("Sorry! You have to wait to cast a vote.")
    }
}

//custom exception class
class customExceptionExample(message: String) : Exception(message)

輸出:

Kotlin 中的自定義異常示例

點選這裡檢視示例程式碼的演示。

在 Kotlin 中使用 @Throws 註釋處理異常

雖然沒有檢查異常,但我們仍然可以在 Kotlin 中處理它們。我們可以通過使用 Kotlin @Throws 異常註釋來做到這一點。

@Throws 註釋有助於 Java 互操作性。因此,如果我們需要將任何已檢查的異常程式碼轉換為 Java,我們可以為 JVM 機器使用 @Throws 註釋。

這是一個示例程式碼來演示相同的內容。

import java.io.*
import kotlin.jvm.Throws

fun main(args: Array<String>) {
    val va=0
    var res=0
    try {
        res=va/0 // Since nothing is divisible by 0, it will throw an exception
    } catch (excep: Exception) {

        // While this is an Airthmetic exception,
        // we will throw a NullPointerException using the function call
        excep().throwJavaChecked()
    }
}
class excep{
    @Throws(NullPointerException::class)
    fun throwJavaChecked() {
        throw NullPointerException()
    }
}

輸出:

在 Kotlin 中使用 @Throws 註解進行異常處理

點選這裡檢視示例程式碼的演示。

Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn