التعامل مع استثناءات متعددة
جزء من قسم 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 مهم - ضع دائمًا الاستثناءات الأكثر تحديدًا قبل الاستثناءات الأكثر عمومية.
التحدي
سهلأنشئ دالة تسمى process_data تقوم بما يلي:
- تأخذ مدخلاً نصياً يمثل بيانات محتملة
- تحاول تحويله إلى عدد صحيح، ثم تحسب ناتج قسمة 100 على ذلك العدد
- تعيد النتيجة
- تتعامل مع 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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1استكشاف المتغيرات
الثوابتإسناد المتغيرات المتعددةتبديل المتغيراتالمتغيرات النائبةتقريب الأرقامتحويل القوائم4تطبيق سجل جهات الاتصال
عرض القائمةإضافة جهة اتصال7المجموعات - الجزء الثاني
العمليات الرياضية - الجزء الأولالعمليات الرياضية - الجزء الثانيمراجعة - البحث عن الكنزالمجموعات الجزئية والمجموعات الشاملةالتكرار عبر المجموعاتمراجعة - متتبع البطولة10أساسيات تضمين القوائم (List Comprehensions)
الصيغة البرمجيةإنشاء قوائم بسيطةإضافة الشروطاستخدام تجميع البياناتمراجعة - بيت القوائممراجعة - عناصر الحرية5اتخاذ القرارات المتقدم
المعامل الثلاثيالتحقق من الانتماءالتحقق من الهويةأخطاء الإزاحةمراجعة - فلتر العطلات8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3القواميس - الجزء الثاني
دوال القواميسالقواميس المتداخلةالتحقق من وجود المفاتيحالتكرار عبر القواميسمراجعة - عداد التكرار9تجميع البيانات المتقدم
استخدام Sumإيجاد الحد الأدنى والأقصىفرز البيانات بكفاءةمراجعة - Dictionary Sorter12أساسيات معالجة الأخطاء
ما هي معالجة الأخطاء؟كتلة Try و Exceptالتعامل مع استثناءات متعددةمراجعة - أخطاء عربة التسوق