Kotlin:
การจัดการกับข้อผิดพลาด

วิธีการ:

Kotlin มี try, catch, finally, และ throw สำหรับการจัดการข้อผิดพลาด นี่คือวิธีที่คุณใช้มัน:

fun main() {
    val numerator = 10
    val denominator = 0

    try {
        val result = numerator / denominator
        println("Result: $result")
    } catch (e: ArithmeticException) {
        println("ไม่สามารถหารด้วยศูนย์ได้, เพื่อน.")
    } finally {
        println("สิ่งนี้เกิดขึ้นไม่ว่าจะอย่างไรก็ตาม.")
    }
}

ผลลัพธ์:

ไม่สามารถหารด้วยศูนย์ได้, เพื่อน.
สิ่งนี้เกิดขึ้นไม่ว่าจะอย่างไรก็ตาม.

หากมีบางอย่างผิดพลาดในบล็อก try, การปฏิบัติการจะกระโจนไปที่ catch มันจะจับข้อผิดพลาดที่เฉพาะเจาะจงที่ถูกโยนออกมา (ArithmeticException ในกรณีนี้) บล็อก finally จะทำการรันหลังจากนั้น—ไม่เกี่ยวว่าผลลัพธ์จะเป็นอย่างไร

การเจาะลึก

บล็อก try-catch ได้รับการใช้งานมาตั้งแต่ยุคการเขียนโปรแกรมเริ่มต้น—เหมือนเป็นตาข่ายความปลอดภัย Kotlin ยังมี throw สำหรับการโยนข้อผิดพลาดเข้าไปในสนามเอง, และมี finally สำหรับโค้ดที่ต้องทำงาน—งานทำความสะอาด, โดยมาก

ทางเลือกอื่น ๆ รวมถึงประเภท Result และ try ของ Kotlin ในฐานะการแสดงออก

val result: Result<Int> = try {
    Result.success(numerator / denominator)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

วิธีนี้คืนค่าเป็นวัตถุ Result—คุณจะได้รับการสำเร็จหรือความล้มเหลวโดยไม่มีดราม่าของข้อยกเว้นที่ไม่ได้จัดการ

การดำเนินการใน Kotlin นั้นดีเพราะคุณสามารถใช้ try เหมือนกับการแสดงออก, หมายถึงมันกลับค่ามา ตัวเลือกเหล่านี้ทำให้การจัดการข้อผิดพลาดใน Kotlin มีความหลากหลายอย่างมาก มันเป็นเรื่องของการเลือกเครื่องมือที่เหมาะสมสำหรับงาน, เหมือนกับที่คุณจะทำในโรงงาน

ดูเพิ่มเติม

  • เอกสาร Kotlin เกี่ยวกับข้อยกเว้น: การจัดการข้อยกเว้นของ Kotlin
  • เอกสารประเภท Result ของ Kotlin: Kotlin Result
  • Effective Java, ฉบับที่ 3, โดย Joshua Bloch—มีข้อมูลเชิงลึกเกี่ยวกับข้อยกเว้น, ถึงแม้ว่ามันจะเฉพาะเจาะจงกับ Java