Pythonでanyエラーをキャッチすることは可能ですか?すべての例外が同じになるため、特定の例外がどうなるかは気にしません。
except
を単独で使用すると、segfault以外の例外がキャッチされます。
_try:
something()
except:
fallback()
_
スクリプトを終了するために使用する必要がある場合に備えて、KeyboardInterruptを個別に処理することができます。
_try:
something()
except KeyboardInterrupt:
return
except:
fallback()
_
キャッチできる基本的な例外のニースリストがあります here 。また、例外からコールスタックを取得するための traceback モジュールも気に入っています。例外ハンドラでtraceback.format_exc()
または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 も確認する必要があります。
例外が発生してキャッチされない場合、インタプリタは、例外クラス、例外インスタンス、およびトレースバックオブジェクトの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