Python Glossary English

Python 3.11+sysфункция

sys.exception()

исключения

Возвращает исключение, которое обрабатывается прямо сейчас (внутри except), или None. Современная замена sys.exc_info() с Python 3.11.

Синтаксис

sys.exception()

Полезна там, где имени из except ... as e не видно: во вспомогательной функции, вызванной из обработчика, или в логгере. После выхода из блока except она снова возвращает None — Python 3 сбрасывает «текущее» исключение, и сохранить его можно только своей переменной. Это то же самое, что sys.exc_info()[1], но одним объектом: тип — type(e), трассировка — e.__traceback__. На Python 3.10 и старше её нет — там AttributeError, и остаётся exc_info().

Примеры

import sys
try:
    int('abc')
except ValueError:
    e = sys.exception()
    print(type(e).__name__, e)  # → ValueError invalid literal for int() with base 10: 'abc'
print(sys.exception())  # → None
import sys
def describe():
    exc = sys.exception()
    return 'нет ошибки' if exc is None else f'обрабатывается {exc!r}'
try:
    {}['k']
except KeyError:
    print(describe())  # → обрабатывается KeyError('k')
print(describe())  # → нет ошибки

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности