Eksepsi #
Penanganan exception di Ruby dilakukan untuk menangani kesalahan yang terjadi selama eksekusi program. Exception handling memungkinkan program untuk menangani kesalahan dengan cara yang terkontrol dan mencegah program berhenti secara tiba-tiba. Ruby menggunakan blok begin, rescue, ensure, dan else untuk menangani exception.
Struktur Dasar Penanganan Exception #
Struktur dasar untuk menangani exception di Ruby adalah menggunakan blok begin dan rescue. Berikut adalah sintaks dasarnya:
begin
# Kode yang mungkin menyebabkan exception
rescue ExceptionType => e
# Kode untuk menangani exception
ensure
# Kode yang akan selalu dijalankan, apakah exception terjadi atau tidak
else
# Kode yang dijalankan jika tidak ada exception
end
Contoh Penanganan Exception #
Menangani Exception Spesifik #
Anda dapat menangani jenis exception tertentu dengan menentukan jenis exception setelah rescue.
Contoh:
begin
result = 10 / 0
rescue ZeroDivisionError => e
puts "Terjadi kesalahan: #{e.message}"
end
Penjelasan: Blok rescue menangani ZeroDivisionError yang terjadi ketika mencoba membagi angka dengan nol. e.message menampilkan pesan kesalahan dari exception.
Menangani Beberapa Jenis Exception #
Anda dapat menangani beberapa jenis exception dengan menyebutkan beberapa jenis exception di blok rescue.
Contoh:
begin
# Kode yang mungkin menyebabkan exception
result = 10 / 0
rescue ZeroDivisionError => e
puts "Terjadi kesalahan pembagian: #{e.message}"
rescue NoMethodError => e
puts "Terjadi kesalahan metode: #{e.message}"
end
Penjelasan: Blok rescue pertama menangani ZeroDivisionError, sementara blok rescue kedua menangani NoMethodError.
Menangani Semua Jenis Exception #
Anda dapat menangani semua jenis exception menggunakan rescue tanpa menentukan tipe exception.
Contoh:
begin
result = 10 / 0
rescue => e
puts "Terjadi kesalahan: #{e.message}"
end
Penjelasan: Ini menangani semua exception yang tidak ditangani oleh blok rescue yang lebih spesifik.
Blok ensure
#
Blok ensure digunakan untuk mengeksekusi kode yang harus dijalankan terlepas dari apakah exception terjadi atau tidak. Ini berguna untuk membersihkan sumber daya, seperti menutup file.
Contoh:
begin
file = File.open("example.txt", "w")
file.write("Hello, world!")
rescue IOError => e
puts "Terjadi kesalahan IO: #{e.message}"
ensure
file.close if file
end
Penjelasan: Blok ensure memastikan bahwa file akan ditutup meskipun terjadi exception.
Blok else
#
Blok else dijalankan jika tidak ada exception yang terjadi dalam blok begin. Ini berguna untuk mengeksekusi kode yang hanya harus berjalan jika tidak ada kesalahan.
Contoh:
begin
result = 10 / 2
rescue ZeroDivisionError => e
puts "Terjadi kesalahan: #{e.message}"
else
puts "Hasilnya adalah #{result}"
end
Penjelasan: Jika tidak ada exception (misalnya, pembagian berhasil), kode dalam blok else akan dijalankan.
Menangani Exception Kustom #
Anda dapat membuat exception kustom dengan mendefinisikan kelas exception yang mewarisi dari kelas StandardError.
Contoh:
class CustomError < StandardError
end
begin
raise CustomError, "Ini adalah exception kustom"
rescue CustomError => e
puts "Terjadi kesalahan kustom: #{e.message}"
end
Penjelasan: CustomError adalah kelas exception kustom yang digunakan untuk membuat dan menangani exception dengan pesan khusus.
Memanfaatkan Backtrace #
Kadang-kadang, Anda mungkin ingin mendapatkan informasi lebih detail tentang tempat exception terjadi dengan memanfaatkan backtrace.
Contoh:
begin
result = 10 / 0
rescue => e
puts "Terjadi kesalahan: #{e.message}"
puts "Backtrace:"
puts e.backtrace
end
Penjelasan: e.backtrace memberikan informasi tentang stack trace yang menunjukkan lokasi terjadinya exception.
Kesimpulan #
Penanganan exception di Ruby memungkinkan Anda untuk mengelola kesalahan dengan cara yang terkontrol dan mencegah program dari crash. Dengan menggunakan blok begin, rescue, ensure, dan else, Anda dapat menangani kesalahan secara efektif dan menjaga kestabilan aplikasi Anda. Jika ada hal lain yang ingin Anda ketahui atau contoh tambahan yang diperlukan, silakan beri tahu!