sys.excepthook

sys.excepthook — это функция, которая вызывается при возникновении необработанного исключения. По умолчанию она выводит трассировку стека в sys.stderr.

Синтаксис

sys.excepthook(type, value, traceback)

Аргументы

  • ``type``: Тип исключения.
  • ``value``: Экземпляр исключения.
  • ``traceback``: Объект трассировки стека.

Примеры

  1. Настройка пользовательского обработчика исключений:

    import sys
    def custom_excepthook(type, value, traceback):
        print("Произошло исключение:", type.__name__, value)
    sys.excepthook = custom_excepthook
    raise ValueError("Ошибка!")
    
  2. Логирование исключений:

    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.