1

つまり、私が欲しいのは:

try:
    print inExceptClause()
    1/0
except Exception:
    print inExceptClause()
print inExceptClause()

...これは印刷されます:

False
True
False
4

2 に答える 2

3

私はあなたがこれについて間違った方法で行っていると思います。「ユースケース」は、コード内の複数のポイントから関数を呼び出すことができるように見えますが、例外ハンドラー内から呼び出されることもあります。その関数内で、例外がスローされたかどうかを知りたいですよね?

重要なのは、呼び出し元のコードについての知識がない(または持っていないはずの)関数にそのようなロジックを含めたくないということです...理想的には、ほとんどの関数にはありません。

そうは言っても、その関数を実行したい場合がありますが、部分的にしか実行できません。したがって、次の2つのオプションのいずれかをお勧めします。

  1. 関数を複数の関数に分割します。1つの関数には追加の機能があり、次に、再利用可能な機能を持つもう1つの関数を呼び出します。必要なときに必要な関数を呼び出すだけです。

  2. 関数にパラメーターを追加します。単純なブール値で、その関数のごく一部を含めたり除外したりするのに十分な場合があります。

さて、これはあなたの質問に対する答えではありませんが、私はあなたがあなたの問題を間違った角度で見ていると感じています...したがって、上記の提案。

于 2012-10-19T07:39:48.033 に答える
0

sys.exc_info()

この関数は、現在処理されている例外に関する情報を提供する3つの値のタプルを返します。(...)スタックのどこでも例外が処理されていない場合、3つのNone値を含むタプルが返されます。

次の質問も参照してください。

例外がアクティブでない場合、Python3トレースバックは失敗しますPython3
に例外がすでに存在する場合に例外を発生させる

于 2012-10-19T09:20:42.260 に答える