مدیریت استثناها در روبی
begin/rescue/ensure/raise برای مدیریت خطاها و استثناها در روبی
استثنا (Exception) چیست؟
استثنا خطایی است که هنگام اجرای برنامه رخ میدهد. با begin/rescue میتوان آن را مدیریت کرد.
ساختار پایه
begin
# کدی که ممکن است خطا دهد
result = 10 / 0
rescue => e
puts "خطا رخ داد: #{e.message}"
end
rescue با نوع خطای خاص
begin
result = 10 / 0
rescue ZeroDivisionError => e
puts "تقسیم بر صفر!"
rescue TypeError => e
puts "خطای نوع!"
end
raise — ایجاد خطا
def check_age(age)
raise ArgumentError, "سن نمیتواند منفی باشد" if age < 0
"سن: #{age}"
end
begin
puts check_age(-5)
rescue ArgumentError => e
puts "خطا: #{e.message}"
end
ensure — همیشه اجرا میشود
begin
puts "شروع"
raise "خطا!"
rescue => e
puts "گرفته شد: #{e.message}"
ensure
puts "این همیشه اجرا میشود" # مثل finally
end
retry — تلاش مجدد
retries = 0
begin
puts "تلاش #{retries + 1}"
raise "خطا!" if retries < 2
puts "موفق!"
rescue
retries += 1
retry if retries < 3
puts "رد شد"
end
ساخت استثنای سفارشی
class MyError < StandardError; end
raise MyError, "خطای سفارشی من!"
خلاصه
| کلمه کلیدی | توضیح |
|---|---|
begin/rescue | try/catch |
raise | ایجاد خطا |
ensure | همیشه اجرا (finally) |
retry | تلاش مجدد |
rescue => e | گرفتن خطا در متغیر |
این مبحث بخشی از دوره آموزش کامل روبی است.