View Categories

8.6. الاستثناءات المُعرّفة من قِبل المستخدم

1 دقيقة

8.6. الاستثناءات المُعرّفة من قِبل المستخدم #

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

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

class Error(Exception):

    """Base class for exceptions in this module."""

    pass

 class InputError(Error):

    """Exception raised for errors in the input.

    Attributes:

        expression -- input expression in which the error occurred

        message -- explanation of the error

    """
    def __init__(self, expression, message):

        self.expression = expression

        self.message = message

 class TransitionError(Error):

    """Raised when an operation attempts a state transition that's not

    allowed.

    Attributes:

        previous -- state at beginning of transition

        next -- attempted new state

        message -- explanation of why the specific transition is not allowed

    """
    def __init__(self, previous, next, message):

        self.previous = previous

        self.next = next

        self.message = message

تُعرّف معظم الاستثناءات بأسماء تنتهي بـ “Error”، على غرار تسمية الاستثناءات القياسية.

تُعرّف العديد من الوحدات النمطية القياسية استثناءاتها الخاصة للإبلاغ عن الأخطاء التي قد تحدث في الدوال التي تُعرّفها. للمزيد من المعلومات حول الفئات، يُرجى الاطلاع على فصل الفئات.

error: Content is protected !!
Scroll to Top