جدول المحتويات
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
لمزيد من المعلومات حول آليات التسلسل، راجع الاستثناءات المدمجة.