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

ما هو الاستثناء؟

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

عندما يحدث خطأ ما أثناء وقت التشغيل، مثل القسمة على صفر، أو تحليل "abc" كعدد صحيح، أو استدعاء طريقة على nil: تقوم Ruby بإثارة استثناء. يتوقف البرنامج، وتقوم Ruby بطباعة ما حدث بالإضافة إلى مكان حدوثه.

10 / 0
# ZeroDivisionError: divided by 0

كل نوع من أنواع الفشل يمثل فئة مستقلة. إليك بعض الأنواع الشائعة:

  • ZeroDivisionError: قسمة عدد صحيح على صفر
  • ArgumentError: تمرير وسائط خاطئة إلى دالة (Integer("abc"))
  • NoMethodError: استدعاء طريقة لا يملكها المستقبل (nil.upcase)
  • TypeError: عملية على نوع خاطئ من الكائنات ("a" + 1)

تمتلك كل فئة استثناء .message: وهو الوصف المقروء بشرياً الذي يطبعه Ruby عندما لا يتم التعامل مع الاستثناء. توضح الدروس القادمة كيفية التقاط هذه الاستثناءات لكي يستمر برنامجك في العمل.

challenge icon

التحدي

مبتدئ

اقرأ سطرًا واحدًا من المدخلات، وهو اسم تعبير Ruby واحد. اطبع اسم فئة الاستثناء (exception class) التي سيقوم Ruby بإثارتها لهذا التعبير. استخدم جملة case (لا يلزم إجراء إثارة فعلية للاستثناء):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • أي شيء آخر ← Unknown

بالنسبة للمدخل nil-method، يكون المخرج هو NoMethodError.

ورقة مرجعية

عندما يحدث خطأ ما أثناء وقت التشغيل، تقوم Ruby **بإثارة استثناء** ويتوقف البرنامج. فئات الاستثناءات الشائعة:

  • ZeroDivisionError: قسمة عدد صحيح على صفر
  • ArgumentError: وسائط خاطئة (مثلاً Integer("abc"))
  • NoMethodError: استدعاء طريقة لا يملكها المستقبل (مثلاً nil.upcase)
  • TypeError: عملية على نوع خاطئ من الكائنات (مثلاً "a" + 1)
10 / 0
# ZeroDivisionError: divided by 0

كل كائن استثناء لديه .message يحتوي على وصف قابل للقراءة من قبل البشر.

جرّب بنفسك

kind = gets.chomp

# مهام: case kind ... اطبع اسم فئة الاستثناء المطابق
quiz iconاختبر نفسك

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

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