例外を再発生させたい場合raiseは、それぞれのexceptブロックで引数なしで簡単に使用できます。しかし、ネストされた式のように
try:
something()
except SomeError as e:
try:
plan_B()
except AlsoFailsError:
raise e # I'd like to raise the SomeError as if plan_B()
# didn't raise the AlsoFailsError
SomeErrorスタックトレースを壊さずにを再度レイズするにはどうすればよいですか?raiseこの場合、単独で、より最近のものをリレイズしAlsoFailsErrorます。または、この問題を回避するためにコードをリファクタリングするにはどうすればよいですか?
argを受け入れる関数の内部にあるということです。プランを提供していarg.plan_B()ないために発生する可能性のある呼び出しを試みますBAttributeErrorarg
plan_B例外を発生させることを許可したいためです
plan_B戻る別の関数を入れてみましたか?その後、外側のブロックはちょうど可能性がありますTrueFalseexceptif not try_plan_B(): raise