все 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Сообщить о неточности