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!