Подтвердить что ты не робот

Поймать любую ошибку в Python

Можно ли поймать любую ошибку в Python? Меня не волнует, каковы будут конкретные исключения, потому что все они будут иметь одинаковый запас.

4b9b3361

Ответ 1

Использование except само по себе приведет к исключению любого исключения, кроме segfault.

try:
    something()
except:
    fallback()

Возможно, вы захотите обработать KeyboardInterrupt отдельно, если вам нужно использовать его для выхода из script:

try:
    something()
except KeyboardInterrupt:
    return
except:
    fallback()

Там есть хороший список основных исключений, которые вы можете поймать здесь. Мне также очень нравится модуль traceback для извлечения стека вызовов из исключения. Попробуйте traceback.format_exc() или traceback.print_exc() в обработчике исключений.

Ответ 2

try:
    # do something
except Exception, e:
    # handle it

Ответ 3

Вы также можете посмотреть sys.excepthook:

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

Пример:

def except_hook(type, value, tback):
    # manage unhandled exception here
    sys.__excepthook__(type, value, tback) # then call the default handler

sys.excepthook = except_hook