Exception Handling di Ruby (Begin/Rescue)
Penjelasan
Exception handling di Ruby memakai begin/rescue (bukan try/catch seperti kebanyakan bahasa lain): kode yang berpotensi error ditaruh di begin, ditangkap di rescue, dan blok ensure (opsional) selalu dijalankan baik terjadi error maupun tidak, biasa dipakai untuk membersihkan resource.
Contoh Konsep
def bagi(a, b)
raise ArgumentError, "Tidak bisa membagi dengan nol." if b == 0
a / b
end
begin
puts bagi(10, 0)
rescue ArgumentError => e
puts "Error: #{e.message}"
ensure
puts "Selesai dicoba."
end
Praktikum
Buat method ambil_elemen(data, index) yang raise IndexError kalau index di luar jangkauan data (cek dengan data.length). Panggil di dalam begin/rescue dengan index yang sengaja tidak ada, lalu tampilkan pesan errornya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
rescue tanpa menyebut jenis exception (rescue => e) akan menangkap StandardError dan semua turunannya — cukup luas untuk kebanyakan kasus, tapi sebaiknya tetap sebutkan jenis exception spesifik (mis. rescue ArgumentError => e) supaya kamu tidak diam-diam menutupi bug lain yang tidak terduga.