Exception Handling di Scala
Penjelasan
Scala menangani error dengan `try`/`catch`/`finally`, mirip bahasa modern lainnya — tapi `catch` di Scala sebenarnya adalah PATTERN MATCHING pada exception, jadi kamu bisa menangani beberapa tipe exception berbeda dalam satu blok `catch` dengan `case`. `finally` selalu dijalankan apa pun hasilnya, cocok untuk cleanup (menutup file, koneksi, dll).
Contoh Konsep
def bagi(a: Int, b: Int): Int = {
if (b == 0) {
throw new IllegalArgumentException("Tidak bisa membagi dengan nol.")
}
a / b
}
try {
bagi(10, 0)
} catch {
case e: IllegalArgumentException => println(s"Argumen tidak valid: ${e.getMessage}")
case e: Exception => println(s"Error lain: ${e.getMessage}")
} finally {
println("Percobaan selesai.")
}
Praktikum
Buat fungsi ambilElemen(list: List[Int], index: Int): Int yang melempar IndexOutOfBoundsException kalau index di luar jangkauan list. Panggil di dalam try/catch dengan index yang sengaja tidak ada, lalu tampilkan pesan errornya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Urutan `case` di dalam `catch` PENTING — tipe exception yang lebih spesifik (mis. `IllegalArgumentException`) harus ditulis SEBELUM tipe yang lebih umum (mis. `Exception`), persis seperti urutan pattern matching biasa.