Настройка обработки исключений по умолчанию Python

Для неперехваченного исключения Python по умолчанию печатает трассировку стека, само исключение и завершает работу. Кто-нибудь знает способ адаптировать это поведение на уровне программы (кроме создания моего собственного глобального обработчика исключений catch-all), чтобы трассировка стека была опущена? Я хотел бы переключить в своем приложении трассировку трассировки стека или нет.

Ответы

Ответ 1

Вы ищете sys.excepthook:

sys.excepthook(тип, значение, трассировка)

Эта функция выводит заданную трассировку и исключение в sys.stderr.

Когда исключение возбуждается и не получается, интерпретатор вызывает sys.excepthook с тремя аргументами, классом исключений, экземпляром исключения и объектом traceback. В интерактивном сеансе это происходит непосредственно перед возвратом элемента управления в приглашение; в программе Python это происходит непосредственно перед выходом программы. Обработка таких исключений верхнего уровня может быть настроена путем назначения другой функции с тремя аргументами в sys.excepthook.