特定の例外タイプをキャッチし、例外のメッセージをチェックしてそれが本当に望んでいたものであるかどうかを確認するという状況に遭遇しました。キャッチする例外、そうでない場合は例外を再スローする:
リーリーこれは正常に動作しますが、問題があります。例外を再発生させた場合、例外は最初に例外が発生した場所ではなく、例外を再発生させた行 (つまり raise e
) で発生します。元の例外がどこで発生したかを知りたいため、これはデバッグには理想的ではありません。
そこで私の質問は次のとおりです:元の例外の場所を維持しながら、例外をキャッチした後に例外を再スローするか、「渡す」方法はありますか?
注: 実際に何が起こっているのか疑問に思っている場合は、いくつかのモジュールを動的にインポートするために __import__
を使用しています。これらのモジュールが存在しない場合を適切に処理するために、importerror
をキャッチしています。ただし、これらのモジュール自体に importerror
を発生させるインポート ステートメントが含まれている場合は、それらの「実際の」(アプリケーションの観点から見た) 例外を、ツールが関与するデバッグの本来の場所で発生させたいと考えています。
これを実行してください:
リーリーraise e の代わりに
。 例外の発生に関するチュートリアル セクションと、##raise ステートメントについての言語リファレンス
を参照してください。
以上がPython で、元の呼び出しスタックを維持しながら例外を確認して再スローするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。