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

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

جزء من قسم Logic & Flow في رحلة Python على Coddy — الدرس 65 من 78.

في لغة بايثون، يمكننا التعامل مع أنواع مختلفة من الاستثناءات في كتل except منفصلة. يتيح لنا ذلك الاستجابة بشكل مختلف بناءً على الخطأ المحدد الذي يحدث.

ابدأ بهيكل try-except أساسي:

try:
    # الكود الذي قد يتسبب في حدوث استثناءات
    pass
except Exception as e:
    # التعامل مع أي استثناء
    pass

للتعامل مع استثناءات متعددة، أضف كتل except محددة:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

يمكنك أيضاً التقاط أنواع متعددة من الاستثناءات في كتلة except واحدة:

try:
    # بعض الأكواد
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

ترتيب كتل except مهم - ضع دائمًا الاستثناءات الأكثر تحديدًا قبل الاستثناءات الأكثر عمومية.

challenge icon

التحدي

سهل

أنشئ دالة تسمى process_data تقوم بما يلي:

  1. تأخذ مدخلاً نصياً يمثل بيانات محتملة
  2. تحاول تحويله إلى عدد صحيح، ثم تحسب ناتج قسمة 100 على ذلك العدد
  3. تعيد النتيجة
  4. تتعامل مع 3 استثناءات محتملة على الأقل: 
    • ValueError إذا تعذر تحويل المدخل إلى عدد صحيح (اطبع "Input must be a number!")
    • ZeroDivisionError إذا كان المدخل هو 0 (اطبع "Cannot divide by zero!")
    • أي استثناء آخر باستخدام معالج عام (اطبع "An unexpected error occurred!")

ورقة مرجعية

تعامل مع أنواع مختلفة من الاستثناءات باستخدام كتل except متعددة:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

التقط أنواعًا متعددة من الاستثناءات في كتلة except واحدة:

try:
    # بعض الأكواد
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

ضع دائمًا الاستثناءات الأكثر تحديدًا قبل الاستثناءات الأكثر عمومية في ترتيب كتل except.

جرّب بنفسك

def process_data(input_string):
    try:
        # محاولة تحويل سلسلة الإدخال إلى عدد صحيح
        
        # حساب 100 مقسومة على قيمة الإدخال
        
        # إرجاع النتيجة
        
    except ValueError:
        # معالجة الحالة التي لا يمكن فيها تحويل الإدخال إلى عدد صحيح
        
    except ZeroDivisionError:
        # معالجة الحالة التي يكون فيها الإدخال صفراً
        
    except:
        # معالجة أي استثناءات أخرى غير متوقعة
        
    return None
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow