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

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

3 ответов


используя except сам по себе поймает любое исключение, кроме segfault.

try:
    something()
except:
    fallback()

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

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

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


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

Для Python 3.x:

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

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

когда исключение вызывается и не перехватывается, интерпретатор вызывает системный.excepthook с тремя аргументами, класс исключения, исключение экземпляр и объект traceback. В интерактивном сеансе это происходит непосредственно перед возвращением элемента управления в приглашение; в 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