View Categories

8.5. تسلسل الاستثناءات

< 1 دقيقة

جدول المحتويات

8.5. تسلسل الاستثناءات #

تسمح عبارة raise بخيار اختياري يُمكّن من تسلسل الاستثناءات. على سبيل المثال:

# exc must be exception instance or None.

raise RuntimeError from exc

قد يكون هذا مفيدًا عند تحويل الاستثناءات. على سبيل المثال:

>>> def func():

...     raise IOError

...

>>> try:

...     func()

... except IOError as exc:

...     raise RuntimeError('Failed to open database') from exc

...

Traceback (most recent call last):

  File "<stdin>", line 2, in <module>

  File "<stdin>", line 2, in func

OSError

 The above exception was the direct cause of the following exception:

 Traceback (most recent call last):

  File "<stdin>", line 4, in <module>

RuntimeError: Failed to open database

يحدث تسلسل الاستثناءات تلقائيًا عند رفع استثناء داخل قسم except أو finally. يمكن تعطيل تسلسل الاستثناءات باستخدام عبارة “من لا شيء”:

>>> try:

...     open('database.sqlite')

... except IOError:

...     raise RuntimeError from None

...

Traceback (most recent call last):

  File "<stdin>", line 4, in <module>

RuntimeError

لمزيد من المعلومات حول آليات التسلسل، راجع الاستثناءات المدمجة.

error: Content is protected !!
Scroll to Top