رسائل الخطأ

1.6 رسائل الخطأ

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • تحديد نوع الخطأ ورقم السطر في رسائل الخطأ.
  • تصحيح أخطاء الصياغة (syntax errors)، وأخطاء الأسماء (name errors)، وأخطاء المسافة البادئة (indentation errors).

كيفية قراءة الأخطاء

ارتكاب الأخطاء جزء طبيعي من البرمجة. حتى المبرمجون ذوو الخبرة يرتكبون أخطاء عند كتابة الشِفرة. وقد تنشأ الأخطاء عن هذه الهفوات أثناء كتابة الشِفرة. يتطلب الحاسوب تعليمات محددة للغاية تخبره بما يجب فعله. إذا لم تكن التعليمات واضحة، فإن الحاسوب لا يعرف ما يجب فعله ويُظهر رسالة خطأ.

عند حدوث خطأ، تعرض بايثون رسالة تحتوي على المعلومات التالية:

  1. رقم سطر الخطأ.
  2. نوع الخطأ (مثال: SyntaxError).
  3. تفاصيل إضافية حول الخطأ.

مثال: كتابة print "Hello!" بدون أقواس هو خطأ صياغة (syntax error). في بايثون، الأقواس مطلوبة لاستخدام print. عند محاولة تشغيل print "Hello!"، تعرض بايثون الخطأ التالي:

Traceback (most recent call last):
  File "/home/student/Desktop/example.py", line 1
    print "Hello"
                ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello")?

يشير رمز الإقحام (^) إلى المكان الذي عثرت فيه بايثون على الخطأ. قد يكون الخطأ أحيانًا موجودًا قبل سطر أو سطرين من المكان الذي يظهر فيه رمز الإقحام، لأن بايثون قد لا تكون قد اكتشفت الخطأ إلا في تلك النقطة. تتبع الخطأ (Traceback) هو تقرير بايثون عن موقع ونوع الخطأ. توحي كلمة "تتبع الخطأ" بأن على المبرمج الرجوع في الشِفرة للعثور على الخطأ إذا لم يكن واضحًا على الفور.

تعلّم قراءة رسائل الخطأ بعناية مهارة مهمة. قد تكون كمية المصطلحات التقنية مربكة في البداية، لكن هذه المعلومات يمكن أن تكون مفيدة جدًا.

نقطة تحقق

اسم مُتغيِّر غير صحيح

مفاهيم تطبيقية

أجزاء الخطأ

بالنظر إلى رسالة الخطأ التالية:

Traceback (most recent call last):
  File "/home/student/Desktop/example.py", line 2
    print "test"
        ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("test")?
1.
ما اسم ملف البرنامج؟
  1. Desktop
  2. example.py
  3. test
2.
في أي سطر وُجد الخطأ؟
  1. 1
  2. 2
  3. 3
3.
ما نوع الخطأ المكتشَف؟
  1. أقواس مفقودة
  2. SyntaxError
  3. تتبع الخطأ

أنواع الأخطاء الشائعة

قد تحدث أنواع مختلفة من الأخطاء عند تشغيل برامج بايثون. عند حدوث خطأ، فإن معرفة نوع الخطأ توفّر فهمًا لكيفية تصحيحه. يعرض الجدول التالي أمثلة على الأخطاء التي يمكن لأي شخص ارتكابها عند البرمجة.

الخطأ رسالة الخطأ الشرح

print("Have a nice day!"

SyntaxError: unexpected EOF while parsing
القوس الختامي مفقود. تفاجأت بايثون بالوصول إلى نهاية الملف (EOF) قبل اكتمال هذا السطر.

word = input("Type a word: )

SyntaxError: EOL while scanning string literal
علامات الاقتباس الختامية مفقودة. ونتيجة لذلك، لا تنتهي السلسلة النصية قبل نهاية السطر (EOL).

print("You typed:", wird)

NameError: name 'wird' is not defined

تهجئة word غير صحيحة. لقد كتب المبرمج مفتاحًا خاطئًا عن طريق الخطأ.

prints("You typed:", word)

NameError: name 'prints' is not defined

تهجئة print غير صحيحة. لقد كتب المبرمج حرفًا إضافيًا عن طريق الخطأ.

  print("Hello")
IndentationError: unexpected indent
لقد كتب المبرمج مسافة عن طريق الخطأ في بداية السطر.
    print("Goodbye")
IndentationError: unexpected indent
لقد ضغط المبرمج مفتاح Tab عن طريق الخطأ في بداية السطر.
جدول 1.5 أخطاء بسيطة.

مفاهيم تطبيقية

أنواع الأخطاء

لكل برنامج أدناه، ما نوع الخطأ الذي سيحدث؟

4.
print("Breakfast options:")
 print("A. Cereal")
 print("B. Eggs")
 print("C. Yogurt")
choice = input("What would you like? ")
  1. IndentationError
  2. NameError
  3. SyntaxError
5.
birth = input("Enter your birth date: )
print("Happy birthday on ", birth)
  1. IndentationError
  2. NameError
  3. SyntaxError
6.
print("Breakfast options:")
print(" A. Cereal")
print(" B. Eggs")
print(" C. Yogurt")
choice = intput("What would you like? ")
  1. IndentationError
  2. NameError
  3. SyntaxError

جرّب بنفسك

ثلاثة أخطاء

يحتوي البرنامج التالي على ثلاثة أخطاء.

  • شغّل البرنامج للعثور على الخطأ الأول، وصحّح سطر الشِفرة المقابل.
  • ثم شغّل البرنامج مرة أخرى للعثور على الخطأ الثاني وتصحيحه.
  • استمر في تشغيل البرنامج وتصحيحه حتى لا تبقى أخطاء.

جرّب بنفسك

رموز خاطئة

تستند هذه الشِفرة إلى مثال سابق، لكنها تحتوي على عدة أخطاء.

  • أحد الأسطر يفتقر إلى علامات الترقيم المطلوبة، وسطر آخر يستخدم رموزًا غير صحيحة.
  • شغّل البرنامج للعثور على الخطأ الأول، وصحّح سطر الشِفرة المقابل.
  • استمر في تشغيل البرنامج وتصحيحه حتى لا تبقى أخطاء.