Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

begin / rescue

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy. الدرس 44 من 56.

لإيقاف استثناء من التسبب في إغلاق برنامجك بشكل مفاجئ، قم بتغليف الكود المحتمل للخطأ داخل begin ... rescue ... end. إذا حدث أي استثناء داخل begin، فإن Ruby ينتقل إلى كتلة rescue المقابلة بدلاً من إنهاء البرنامج.

begin
  result = 10 / 0
  puts result
rescue ZeroDivisionError
  puts "Cannot divide by zero!"
end
# لا يمكن القسمة على صفر!

يمكنك التقاط كائن الاستثناء نفسه باستخدام => e وقراءة .message الخاص به:

begin
  Integer("hello")
rescue ArgumentError => e
  puts "Bad input: #{e.message}"
end
# إدخال سيء: قيمة غير صالحة لـ Integer(): "hello"

إذا لم تقم بتسمية فئة استثناء، فإن rescue بمفردها تلتقط StandardError ومتحدراتها، وهي معظم الأخطاء اليومية. يكون الالتقاط أكثر فائدة عندما يمكنك فعل شيء ما في كتلة rescue: استبدال قيمة افتراضية، أو تسجيل المشكلة، أو سؤال المستخدم مرة أخرى.

challenge icon

التحدي

سهل

اقرأ سطرين من الإدخال، يجب أن يكون كلاهما أعدادًا صحيحة، ولكن السطر الثاني قد لا يكون رقمًا صالحًا.

قم بتغليف تحليل السطر الثاني في begin / rescue:

  • استخدم Integer(input) (الذي يرفع ArgumentError عند إدخال نص غير صالح)
  • إذا نجح التحليل، اطبع Sum: <a + b>
  • إذا فشل، اطبع Bad number!

بالنسبة للإدخال 3 ثم 4، تكون المخرجات Sum: 7. بالنسبة للإدخال 3 ثم abc، تكون المخرجات Bad number!.

جرّب بنفسك

a = gets.to_i
raw_b = gets.chomp

# TODO: begin/rescue حول Integer(raw_b)؛ اطبع المجموع أو النص الدقيق من التعليمات
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق العمليات

تدرّب بنفسك: مترجم Ruby عبر الإنترنت