Python(2.6)で、スタックのどこかで例外処理コードから呼び出されているかどうかを判断できる関数を記述したいと思います。Pythonでは、例外処理コードによって呼び出されるかどうかを知る方法は?
これは、特殊なログ用です。 Pythonのlogging
モジュールでは、呼び出し側が例外情報をログに記録するように明示的に指定する必要があります(logger.exception()
を呼び出すか、exc_info
キーワードを使用して呼び出す)。私は、ロガーが例外処理コード内から呼び出されているかどうかに基づいて自動的にこれを行うようにしたいと思います。
私はsys.exc_info()のチェックが答えかもしれないと考えましたが、すでに処理されている例外から例外情報も返します。 (docsから: "この関数は、現在処理されている例外に関する情報を与える3つの値のタプルを返します。現在のスタックフレームが例外を処理していない場合、情報は呼び出し元のスタックフレームから取得されます。呼び出し元などのスタックフレームが発見されるまで、その例外を処理している。ここで、「実行または句以外を実行した。」 ")
としても定義される「例外処理」、私はこれを呼び出し側に透過的にしたいので、節にexc_clear()
または何かを使用する必要はありません。
これは正しい方法はありますか?
どのように呼び出しコンテキストが曖昧になる可能性がありますか?例外**から呼び出される関数**を定義します。常に例外から呼び出されます。どうしたの?なぜ例外から呼び出されるように設計された関数が例外から呼び出されないのか、いくつかの感覚を提供してください。 –
私はこれを例外から呼び出される関数として定義しませんでした。これは、例外から呼び出される可能性のある関数、または非例外から呼び出される可能性のある関数です。私はどちらが当てはまるかを判断したい。 –
Ummm ...あなたの関数を定義するのに何が問題なのですか?**例外から呼び出さなければなりませんか?これを簡略化するために関数定義を変更できない原因は何ですか? –