Можно ли поймать любую ошибку в Python? Меня не волнует, каковы будут конкретные исключения, потому что все они будут иметь одинаковый запас.
Поймать любую ошибку в Python
Ответ 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