Menu
CoddyTech

Beberapa Klausa rescue

Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 45 dari 56.

Satu blok begin dapat memiliki beberapa klausa rescue. Ruby memeriksanya dari atas ke bawah dan menjalankan klausa pertama yang kelas exception-nya cocok.

begin
  number = Integer(gets.chomp)
  result = 100 / number
  puts result
rescue ArgumentError
  puts "That's not a valid number."
rescue ZeroDivisionError
  puts "Can't divide by zero."
end

Urutan itu penting: cantumkan class yang spesifik sebelum class yang umum. Jika StandardError ditempatkan pertama, class itu akan menangani semuanya dan cabang-cabang berikutnya tidak akan pernah dijalankan.

Kamu juga bisa menangkap beberapa class pengecualian dalam satu percabangan dengan mencantumkannya menggunakan koma:

begin
  risky_call
rescue ArgumentError, TypeError => e
  puts "Bad input: #{e.message}"
end

Gunakan ini saat kode pemulihan sama untuk beberapa mode kegagalan.

challenge icon

Tantangan

Mudah

Baca dua baris dari input, yang keduanya dimaksudkan sebagai bilangan bulat. Gunakan Integer(...) untuk keduanya, lalu bagi bilangan pertama dengan bilangan kedua.

Tangani tiga kasus dengan cabang rescue yang terpisah:

  • ArgumentError → cetak Bad number!
  • ZeroDivisionError → cetak Cannot divide by zero!
  • TypeError → cetak Wrong type!

Jika semuanya berjalan lancar, cetak Result: <a / b> (pembagian bilangan bulat).

Untuk input 10 / 2, output-nya adalah Result: 5. Untuk 10 / 0, Cannot divide by zero!. Untuk 10 / abc, Bad number!.

Coba sendiri

raw_a = gets.chomp
raw_b = gets.chomp

# TODO: begin ... rescue ArgumentError ... rescue ZeroDivisionError ... rescue TypeError ... end
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Ruby online