Study
Scala

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.

Editor Latihan

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.