Python Glossary English

все Python 3sysфункция

sys.excepthook()

исключения

Функция, которую интерпретатор вызывает для непойманного исключения перед завершением программы; по умолчанию печатает трассировку в stderr.

Синтаксис

sys.excepthook = hook  # hook(exc_type, exc_value, exc_tb)

Замена sys.excepthook — способ залогировать любой сбой программы, но не спасти её: после вызова хука программа всё равно завершится с кодом 1. Хук не срабатывает на SystemExit (sys.exit) и не видит исключений в потоках — для них отдельный threading.excepthook. В Jupyter и IPython подмена не действует: там свой обработчик. Исходный хук хранится в sys.__excepthook__, им же его и возвращают.

Примеры

import sys
def hook(exc_type, exc, tb):
    print('Сбой:', exc_type.__name__, exc)
sys.excepthook = hook
try:
    1 / 0
except ZeroDivisionError:
    sys.excepthook(*sys.exc_info())  # → Сбой: ZeroDivisionError division by zero
sys.excepthook = sys.__excepthook__
print(sys.excepthook is sys.__excepthook__)  # → True

См. также

Частые ошибки

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