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: استبدال قيمة افتراضية، أو تسجيل المشكلة، أو سؤال المستخدم مرة أخرى.
التحدي
سهلاقرأ سطرين من الإدخال، يجب أن يكون كلاهما أعدادًا صحيحة، ولكن السطر الثاني قد لا يكون رقمًا صالحًا.
قم بتغليف تحليل السطر الثاني في 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)؛ اطبع المجموع أو النص الدقيق من التعليمات
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق العمليات
1السلاسل النصية بعمق
نظرة عامة على أساليب السلاسل النصيةاستيفاء السلاسل النصيةالتكرار عبر السلاسل النصيةالتقسيم والضممراجعة - ناسج السلاسل النصية4Blocks، Procs و Lambdas
ما هي الكتلة؟do..end مقابل الأقواس المعقوفةالكلمة المفتاحية yieldمعاملات الكتلةProcs و Lambdasمراجعة - مكرّر مخصّص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر HashesHashes متداخلةالدمج والتحويلمراجعة - عدّاد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - خط أنابيب البيانات3المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة للمصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات6المشروع - مدير المكتبة
نظرة عامة على المشروعإضافة كتاب9معالجة الأخطاء
ما هو الاستثناء؟begin / rescueعبارات rescue المتعددةensure و raiseمراجعة - آلة حاسبة آمنةتدرّب بنفسك: مترجم Ruby عبر الإنترنت