sys.excepthook
sys.excepthook — это функция, которая вызывается при возникновении необработанного исключения. По умолчанию она выводит трассировку стека в sys.stderr.
Синтаксис
sys.excepthook(type, value, traceback)
Аргументы
- ``type``: Тип исключения.
- ``value``: Экземпляр исключения.
- ``traceback``: Объект трассировки стека.
Примеры
Настройка пользовательского обработчика исключений:
import sys def custom_excepthook(type, value, traceback): print("Произошло исключение:", type.__name__, value) sys.excepthook = custom_excepthook raise ValueError("Ошибка!")
Логирование исключений:
import sys import logging logging.basicConfig(filename='errors.log', level=logging.ERROR) def log_excepthook(type, value, traceback): logging.error("Необработанное исключение:", exc_info=(type, value, traceback)) sys.excepthook = log_excepthook
Частые вопросы и проблемы
- Как восстановить стандартный обработчик исключений? Используйте sys.excepthook = sys.__excepthook__.
- Почему excepthook не вызывается для SystemExit? Исключение SystemExit обрабатывается отдельно и не вызывает excepthook.