Menu
CoddyTech

begin / rescue

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

Untuk mencegah exception membuat programmu crash, bungkus kode yang berisiko dengan begin ... rescue ... end. Jika ada sesuatu di dalam begin yang memunculkan exception, Ruby akan beralih ke blok rescue yang sesuai alih-alih menghentikan program.

begin
  result = 10 / 0
  puts result
rescue ZeroDivisionError
  puts "Cannot divide by zero!"
end
# Tidak bisa membagi dengan nol!

Kamu bisa menangkap object exception itu sendiri dengan => e dan membaca .message miliknya:

begin
  Integer("hello")
rescue ArgumentError => e
  puts "Bad input: #{e.message}"
end
# Input salah: nilai tidak valid untuk Integer(): "hello"

Jika kamu tidak menyebutkan class exception, rescue saja akan menangkap StandardError dan turunannya, yaitu sebagian besar kegagalan yang umum terjadi. Penangkapan paling berguna saat kamu bisa melakukan sesuatu di blok rescue: mengganti dengan nilai default, mencatat masalah, atau meminta pengguna mencoba lagi.

challenge icon

Tantangan

Mudah

Baca dua baris dari input, keduanya seharusnya berupa bilangan bulat, tetapi baris kedua mungkin bukan angka yang valid.

Bungkus parsing baris kedua dengan begin / rescue:

  • Gunakan Integer(input) (yang memunculkan ArgumentError jika string tidak valid)
  • Jika parsing berhasil, cetak Sum: <a + b>
  • Jika gagal, cetak Bad number!

Untuk input 3 lalu 4, output-nya adalah Sum: 7. Untuk 3 lalu abc, output-nya adalah Bad number!.

Coba sendiri

a = gets.to_i
raw_b = gets.chomp

# TODO: gunakan begin/rescue untuk Integer(raw_b); cetak jumlahnya atau teks persis seperti dalam instruksi
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