web-dev-qa-db-ja.com

Python

Pythonでanyエラーをキャッチすることは可能ですか?すべての例外が同じになるため、特定の例外がどうなるかは気にしません。

26
user825286

exceptを単独で使用すると、segfault以外の例外がキャッチされます。

_try:
    something()
except:
    fallback()
_

スクリプトを終了するために使用する必要がある場合に備えて、KeyboardInterruptを個別に処理することができます。

_try:
    something()
except KeyboardInterrupt:
    return
except:
    fallback()
_

キャッチできる基本的な例外のニースリストがあります here 。また、例外からコールスタックを取得するための traceback モジュールも気に入っています。例外ハンドラでtraceback.format_exc()またはtraceback.print_exc()を試してください。

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

Python 3.xの場合:

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

sys.excepthook も確認する必要があります。

例外が発生してキャッチされない場合、インタプリタは、例外クラス、例外インスタンス、およびトレースバックオブジェクトの3つの引数を使用してsys.excepthookを呼び出します。インタラクティブセッションでは、これは制御がプロンプトに戻る直前に発生します。 Pythonプログラムでは、これはプログラムが終了する直前に発生します。このようなトップレベルの例外の処理は、sys.excepthookに別の3つの引数の関数を割り当てることによってカスタマイズできます。

例:

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

sys.excepthook = except_hook
9
warvariuc