私は、特定の例外の型をキャッチ、それは実際に私がキャッチしたい例外だかどうかを確認するために、例外のメッセージを検査して、そうでない場合は、例外を調達再てるような状況を持っている:Pythonでは、元の呼び出しスタックを維持しながら例外を調べて再起動するにはどうすればよいですか?
try:
# do something exception-prone
except FooException as e:
if e.message == 'Something I want to handle':
# handle the exception
else:
raise e
これは正常に動作し、1つの問題があります。例外が再発生した場合、その例外は元々発生した場所ではなく、再発生した行(つまりraise e
)で発生します。元の例外がどこで発生したのかを知りたいデバッグには理想的ではありません。
私の質問:オリジナルの例外の場所を維持しながらキャッチした後で例外を再発生させるか、「渡す」方法はありますか?
注:実際の状況が不思議に思う場合は、__import__
を使用していくつかのモジュールを動的にインポートしています。私はImportError
を捕まえて、これらのモジュールが存在しない場合を適切に処理します。しかし、これらのモジュール自体にImportError
を呼び出すimportステートメントが含まれている場合は、(アプリケーションの観点から)例外が発生しないように、そして元の場所でデバッグまでツールが関係している。
Duh!簡単です。私はtry/exceptのための参照を見ていて、raiseを見るのを忘れていました。ありがとう。 – Ghopper21