unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Eksepsi

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!

« Interface
List »