Je sais que si je veux re-lever une exception, je l'utilise simplement raise
sans arguments dans le except
bloc 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 SomeError
sans casser la trace de la pile? raise
seul, dans ce cas, relèverait le plus récent AlsoFailsError
. Ou comment pourrais-je refactoriser mon code pour éviter ce problème?
arg
et j'essaierais d'appeler, arg.plan_B()
ce qui pourrait entraîner un AttributeError
problème en raison de arg
ne pas fournir de plan B
plan_B
de lever des exceptions
plan_B
dans une autre fonction qui retourneTrue
sur le succès etFalse
sur l'exception? Ensuite, leexcept
bloc extérieur pourrait simplement êtreif not try_plan_B(): raise