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