Ruby nangani kesalahan karo begin/rescue/ (padhinan Ruby saka try/catch/finally). Sampeyan exceptions lan iku, karo kanggo nebus. Ruby uga ngidini method-level rescue (tanpa eksplisit) kanggo kode sing luwih resik.
Ruby nangani kesalahan karo begin/rescue/ (padhinan Ruby saka try/catch/finally). Sampeyan exceptions lan iku, karo kanggo nebus. Ruby uga ngidini method-level rescue (tanpa eksplisit) kanggo kode sing luwih resik.
ensureraiserescueensurebeginbegin
result = risky_operation
rescue ArgumentError => e # rescue a SPECIFIC exception type
puts "Bad argument: #{e.message}"
rescue StandardError => e # broader catch (StandardError, not Exception)
puts "Error: #{e.message}"
retry if attempts < 3 # retry can re-run the begin block
else
puts "succeeded" # runs if NO exception
ensure
cleanup # ALWAYS runs (success or failure)
end
begin/rescue/ensure punika try/catch/finally Ruby. Rescue tipe khusus (rescue ArgumentError), nggunakake ensure kanggo nebus sing dijamin, lan else kanggo kasus tanpa kesalahan. retry bisa nyoba maneh blok.
rescue => e # ✅ bare rescue catches StandardError (the right default)
rescue StandardError # ✅ explicit, same thing
rescue Exception # ❌ AVOID — catches EVERYTHING including system signals
# (Interrupt/Ctrl-C, SystemExit) — can break the program
Penting: rescue kosong nyekel StandardError (standar sing bener kanggo kesalahan aplikasi). Rescue Exception (akar) nyekel kabeh, kalebu sinyal tingkat sistem kaya Interrupt (Ctrl-C) lan SystemExit — sing biasane ora pengin sampeyan nyekel, amarga bisa nyegah program supaya ora bisa dinterrupt utawa metu kanthi patut. Kalepatan Ruby sing umum.
raise ArgumentError, "Amount must be positive" # raise a built-in
raise "Something failed" # raises RuntimeError
# custom exception class
class InsufficientFundsError < StandardError # inherit from StandardError
def initialize(msg = "Not enough funds")
super
end
end
raise InsufficientFundsError
def process
do_work
rescue => e # rescue WITHOUT begin — applies to the whole method body
handle(e)
ensure
cleanup
end
Exception handling sing bener penting kanggo aplikasi Ruby sing kuat, lan ngerti pendekatan Ruby — kalebu idiom lan perhatian khususe — iku penting.
Struktur begin/rescue/ensure (try/catch/finally Ruby), rescue tipe exception spesifik, nggunakake ensure kanggo nebus sing dijamin, lan method-level rescue sing resik (tanpa begin eksplisit) minangka kawruh dasar araw-araw.
Salah sawijining poin paling penting lan khas Ruby punika pambedaan StandardError vs Exception: rescue kosong (lan standar sing bener) nyekel StandardError, nanging rescue Exception (akar hirarki) nyekel kabeh — kalebu sinyal sistem kaya Interrupt (Ctrl-C) lan SystemExit — sing meh ora pernah pengin, amarga bisa nyegah program supaya ora bisa diilangi utawa metu kanthi patut, lan minangka kalepatan umum sing mbebayani.
Ngerti yen kudu rescue StandardError (ora Exception) kanggo kesalahan aplikasi iku kawruh khas Ruby penting sing nyegah bug nyata.
Ngerti struktur, kelas exception custom (warisan saka StandardError), retry, idiom method-level rescue, lan utamane perhatian StandardError-ora-Exception penting kanggo nulis Ruby kuat lan bener sing nangani kesalahan kanthi lembut tanpa nyisak kemampuan program kanggo diilangi.
Amarga kesalahan tanpa tanganan lan kalepatan Exception-rescue loro-lorone nyebabake masalah nyata, nguasai exception handling Ruby — struktur, idiom, lan pambedaan kritis StandardError vs Exception — penting, kawruh sing sering relevan kanggo pangembangan Ruby sing dipercaya lan topik interview umum.