English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي لتعلم Python

تحكم في العملية في Python

الوظائف في Python

نوع البيانات في Python

عمليات ملفات Python

أ objetos و classes في Python

تواريخ وتوقيتات Python

معرفة متقدمة لـ Python

كتيب مرجعي لـ Python

الاستثناءات المخصصة في Python

يحتوي Python على العديداستثناءات مدمجة، مما يجبر برنامجك على إنتاج خطأ عند حدوث بعض الأخطاء.

لكن في بعض الأحيان قد تحتاج إلى إنشاء استثناءات مخصصة تتوافق مع أهدافك.

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

>>> class CustomError(Exception):
... pass
...
>>> raise CustomError
استدعاء التتبع (الاستدعاء الأخير أحدث):
...
__main__.CustomError
>>> raise CustomError("An error occurred")
استدعاء التتبع (الاستدعاء الأخير أحدث):
...
__main__.CustomError: An error occurred

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

عند تطوير برامج Python كبيرة، من الأفضل وضع جميع الاستثناءات المحددة من قبل المستخدم في ملف منفرد. يمكن للعديد من الملفات القياسية القيام بذلك. يقومون بتعريف الاستثناءات في ملفات مثل exceptions.py أو errors.py.

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

مثال: استثناءات المستخدم المحددة في Python

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

هذا البرنامج سيطلب من المستخدم إدخال رقم حتى يتمكن من توقع الرقم المخزن بشكل صحيح. لتحقيق هذا الهدف، سيتم إعلام المستخدم إذا كانت توقعته أكبر أو أصغر من الرقم المخزن.

# تعريف استثناءات المستخدم في Python
class Error(Exception):
   """فئة أساسية للاستثناءات الأخرى"""
   pass
class ValueTooSmallError(Error):
   """تُثار عندما تكون القيمة أصغر من المتوقعة"""
   pass
class ValueTooLargeError(Error):
   """تُثار عندما تكون القيمة أكبر من المتوقعة"""
   pass
# برنامجنا الرئيسي
# يحدد المستخدم رقمًا، حتى يصل إلى الرقم الصحيح
# تحتاج إلى توقع هذا الرقم
number = 10
while True:
   try:
       i_num = int(input("أدخل الرقم: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("القيمة صغيرة جدًا، حاول مرة أخرى!")
       print()
   except ValueTooLargeError:
       print("القيمة كبيرة جدًا، حاول مرة أخرى!")
       print()
print("تهانيًا! لقد توقعت ذلك.")

هذا هو مثال على تشغيل البرنامج.

أدخل الرقم: 12
القيمة كبيرة جدًا، حاول مرة أخرى!
أدخل الرقم: 0
القيمة صغيرة جدًا، حاول مرة أخرى!
أدخل الرقم: 9
القيمة صغيرة جدًا، حاول مرة أخرى!
أدخل الرقم: 10
تهانيًا! لقد توقعت ذلك.

في هذا المكان، قمنا بتعريف فئة أساسية تسمى Error.

الاستثناءان الآخران الذي يسببها برنامجنا (ValueTooSmallError وValueTooLargeError) مستمدان من هذا الفئة. هذا هو الطريقة المعيارية لتعريف استثناءات المستخدم في برمجة Python، ولكن لست مقيدين بهذه الطريقة فقط.

زيارة هذه الصفحة للحصول على معلومات تفصيليةكيفية معالجة استثناءات Python.