معالجة الأخطاء في Python: دليل شامل لـ try-except-finally

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

معالجة الاستثناءات في Python: دليل شامل

الأخطاء جزء لا يتجزأ من تطوير البرمجيات. حتى الكود الأكثر دقة قد يواجه ظروفًا غير متوقعة: ملف مفقود، القسمة على صفر، مشاكل في الاتصال بالشبكة، وغيرها. لمنع تعطل البرنامج في هذه الحالات، توفر Python آلية قوية لمعالجة الاستثناءات تعتمد على بنية try-except-finally.

كيف تعمل بنية try-except-finally في Python؟

تسمح لك بنية try-except-finally بالتقاط الاستثناءات التي تحدث أثناء تنفيذ البرنامج، والاستجابة لها بشكل صحيح.

الصيغة العامة:

try:
    # الكود الذي قد يسبب استثناءً
except SomeException:
    # كود معالجة الاستثناء
finally:
    # كود سيتم تنفيذه في جميع الأحوال

شرح عمل الكتل:

  • try: في هذه الكتلة يتم وضع الكود الرئيسي الذي قد ينشأ فيه استثناء.
  • except: هنا يتم تحديد ما يجب فعله في حالة حدوث استثناء في كتلة try. يمكن تحديد نوع معين من الاستثناء (SomeException) لالتقاطه.
  • finally: يتم تنفيذ كتلة finally دائمًا، بغض النظر عما إذا كان قد تم إنشاء استثناء في كتلة try أم لا. تُستخدم عادةً لتحرير الموارد، مثل إغلاق الملفات أو اتصالات الشبكة أو قواعد البيانات.

مثال على استخدام try-except-finally

try:
    number = int(input("أدخل رقمًا صحيحًا: "))
    result = 10 / number
    print(f"النتيجة: {result}")
except ZeroDivisionError:
    print("خطأ: القسمة على صفر غير مسموح بها.")
except ValueError:
    print("خطأ: يرجى إدخال رقم صحيح صالح.")
finally:
    print("انتهاء تشغيل البرنامج.")

كيف يعمل هذا الكود:

  1. يطلب البرنامج من المستخدم إدخال رقم صحيح.
  2. إذا أدخل المستخدم 0، يحدث استثناء ZeroDivisionError، ويتم تنفيذ كتلة except المناسبة.
  3. إذا أدخل المستخدم رقمًا غير صحيح، يحدث استثناء ValueError، ويتم تنفيذ كتلة except المناسبة.
  4. يتم تنفيذ كتلة finally في جميع الأحوال، لعرض رسالة انتهاء تشغيل البرنامج.

لماذا نحتاج إلى كتلة finally؟

تضمن كتلة finally تنفيذ الكود المهم بغض النظر عن حدوث استثناء. إليك بعض السيناريوهات الشائعة لاستخدامها:

  • إغلاق الملفات:

    file = open("data.txt", "r")
    try:
        content = file.read()
        # معالجة محتوى الملف
    finally:
        file.close()  # إغلاق الملف بشكل مضمون
    
  • تحرير الموارد: تحرير اتصالات الشبكة، اتصالات قواعد البيانات، والموارد الأخرى التي يجب إغلاقها أو تحريرها بعد الاستخدام.

  • إنهاء التسجيل أو تنظيف البيانات المؤقتة: يمكن استخدام كتلة finally لإنهاء الكتابة في ملف السجل أو لحذف الملفات المؤقتة التي تم إنشاؤها أثناء تشغيل البرنامج.

معالجة استثناءات متعددة

في كتلة try واحدة، قد تحدث عدة أنواع مختلفة من الاستثناءات. تقدم Python عدة طرق لمعالجة هذه الحالة:

استخدام عدة كتل except

try:
    number = int(input("أدخل رقمًا: "))
    result = 100 / number
    print(resu                

المدونات

توصيات الكتب