جميع أخطاء بايثون: أسبابها وكيفية إصلاحها
الأخطاء في البرمجة جزء لا يتجزأ من عملية كتابة الكود. حتى المطورين المخضرمين يواجهون استثناءات مختلفة بين الحين والآخر. من المهم ليس فقط معرفة أنواع الأخطاء في بايثون، بل فهم أسباب حدوثها وطرق إصلاحها بشكل صحيح.
معرفة أنواع أخطاء بايثون ستساعدك على تشخيص المشكلات في الكود بشكل أسرع وإيجاد حلول فعالة. في هذا المقال، سنستعرض بالتفصيل جميع الفئات الرئيسية للأخطاء في بايثون: الأخطاء النحوية، المنطقية، استثناءات وقت التشغيل، وطرق معالجتها.
الأخطاء النحوية في بايثون (SyntaxError)
ما هي الأخطاء النحوية
تنشأ الأخطاء النحوية في بايثون نتيجة مخالفة قواعد كتابة الكود. لن يتمكن مفسر بايثون من تنفيذ البرنامج حتى تقوم بإصلاح جميع الأخطاء النحوية.
الأسباب الشائعة للأخطاء النحوية
تشمل الأسباب الرئيسية لحدوث الأخطاء النحوية ما يلي:
- فقدان الأقواس أو علامات الاقتباس أو النقطتين
- المسافات البادئة غير الصحيحة في الكود
- أخطاء في كتابة الكلمات المفتاحية لبايثون
- استخدام غير صحيح للمُعامِلات (operators)
مثال على خطأ نحوي
if x > 0
print("رقم موجب") # تم حذف النقطتين
الخطأ: SyntaxError: invalid syntax
حل الخطأ النحوي
if x > 0:
print("رقم موجب")
خطأ SyntaxError: unexpected EOF while parsing
أسباب حدوث خطأ EOF
يشير خطأ "unexpected EOF while parsing" إلى أن مفسر بايثون وصل إلى نهاية الملف دون العثور على إكمال للتركيب النحوي.
الأسباب الشائعة لهذا الخطأ:
- فقدان أقواس الإغلاق بأنواعها المختلفة
- تعريف غير مكتمل للدوال أو الكلاسات
- غياب العناصر الختامية في التراكيب متعددة الأسطر
مثال على خطأ EOF
def greet(name):
print("مرحبًا، " + name # لا يوجد قوس إغلاق
الخطأ: SyntaxError: unexpected EOF while parsing
حل خطأ EOF
def greet(name):
print("مرحبًا، " + name)
استثناءات وقت التشغيل في بايثون
الخصائص العامة لأخطاء وقت التشغيل
تظهر استثناءات وقت التشغيل أثناء تشغيل البرنامج، حتى لو كان التركيب النحوي صحيحًا. هذه الأخطاء في بايثون تظهر فقط عند تنفيذ أجزاء معينة من الكود.
الأنواع الرئيسية لأخطاء وقت التشغيل
أكثر استثناءات وقت التشغيل شيوعًا:
- ZeroDivisionError - القسمة على صفر
- NameError - استخدام متغير غير معرف
- TypeError - نوع بيانات غير مناسب للعملية
- ValueError - قيمة غير صالحة للدالة
- IndexError - مؤشر خارج نطاق القائمة
- KeyError - مفتاح غير موجود في القاموس
- AttributeError - خاصية غير موجودة في الكائن
خطأ ZeroDivisionError: division by zero
أسباب حدوث ZeroDivisionError
يحدث خطأ ZeroDivisionError عند محاولة قسمة رقم على صفر. وهو من أكثر الأخطاء شيوعًا في بايثون، خاصة عند العمل مع العمليات الحسابية.
مثال على ZeroDivisionError
a = 10
b = 0
print(a / b)
الخطأ: ZeroDivisionError: division by zero
حل ZeroDivisionError
a = 10
b = 0
if b != 0:
print(a / b)
else:
print("خطأ: القسمة على صفر غير ممكنة!")
استخدام try-except لمعالجة ZeroDivisionError
try:
result = a / b
print(result)
except ZeroDivisionError:
print("القسمة على صفر غير مسموح بها")