1

Есть много исключений, которые я не хочу ловить, я хочу, чтобы они прекратили обработку, но мне все еще нужна трассировка стека в файле журнала. Есть ли способ настроить регистратор, чтобы он автоматически регистрировал все исключения?Как регистрировать все исключения в python 3

Сейчас я пишу такие вещи, как это много:

try: 
    blah 
except: 
    logging.exception('doing blah') 
    raise 

, которые занимают много времени и пространства + это будет только регистрировало исключения, для которых у меня есть пункт попробовать, а не другие.

Спасибо.

ответ

1

Вы можете использовать декоратор, чтобы обернуть отдельные функции и методы с кодом, который регистрирует любое неперехваченное исключение.

Это означает одну дополнительную строку кода перед любым определением функции, которое должно выполнять это ведение журнала. Преимущество: можно быстро добавить и удалить.

Декоратор также может получить аргументы. Например, вы можете указать базовый класс тех исключений, которые хотите записать.

Here's a basic question & concise answer on how to write decorators.

0

Вы можете поместить улов все обработчик на самом верхнем уровне коды:

try: 
    everything 
except: 
    logging.exception('unhandled') 
    raise 
+0

Танки, но я прыгал за то, что мог установить в модуле, где я создаю свой регистратор, так как я импортирую этот модуль во все мои программы. –

Смежные вопросы