Je sais que si je veux re-lever une exception, je l'utilise simplement raisesans arguments dans le exceptbloc respectif . Mais étant donné une expression imbriquée comme
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
comment puis-je re-lever le SomeErrorsans casser la trace de la pile? raiseseul, dans ce cas, relèverait le plus récent AlsoFailsError. Ou comment pourrais-je refactoriser mon code pour éviter ce problème?
arget j'essaierais d'appeler, arg.plan_B()ce qui pourrait entraîner un AttributeErrorproblème en raison de argne pas fournir de plan B
plan_Bde lever des exceptions
plan_Bdans une autre fonction qui retourneTruesur le succès etFalsesur l'exception? Ensuite, leexceptbloc extérieur pourrait simplement êtreif not try_plan_B(): raise