Python で、元の呼び出しスタックを維持しながら例外を確認して再スローするにはどうすればよいですか?

WBOY
リリース: 2024-02-08 21:42:14
転載
492 人が閲覧しました

在 Python 中,如何在维护原始调用堆栈的同时检查然后重新引发异常?

質問の内容

特定の例外タイプをキャッチし、例外のメッセージをチェックしてそれが本当に望んでいたものであるかどうかを確認するという状況に遭遇しました。キャッチする例外、そうでない場合は例外を再スローする:

リーリー

これは正常に動作しますが、問題があります。例外を再発生させた場合、例外は最初に例外が発生した場所ではなく、例外を再発生させた行 (つまり raise e) で発生します。元の例外がどこで発生したかを知りたいため、これはデバッグには理想的ではありません。

そこで私の質問は次のとおりです:元の例外の場所を維持しながら、例外をキャッチした後に例外を再スローするか、「渡す」方法はありますか?

注: 実際に何が起こっているのか疑問に思っている場合は、いくつかのモジュールを動的にインポートするために __import__ を使用しています。これらのモジュールが存在しない場合を適切に処理するために、importerror をキャッチしています。ただし、これらのモジュール自体に importerror を発生させるインポート ステートメントが含まれている場合は、それらの「実際の」(アプリケーションの観点から見た) 例外を、ツールが関与するデバッグの本来の場所で発生させたいと考えています。


正解


これを実行してください:

リーリー

raise e の代わりに 例外の発生に関するチュートリアル セクションと、##raise ステートメントについての言語リファレンス を参照してください。

以上がPython で、元の呼び出しスタックを維持しながら例外を確認して再スローするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート