Eu sei que se eu quiser relançar uma exceção, eu simplesmente uso raisesem argumentos no respectivo exceptbloco. Mas dada uma expressão aninhada como
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
como posso aumentar novamente o SomeErrorsem quebrar o rastreamento de pilha? raisesozinho, neste caso, ressuscitaria o mais recente AlsoFailsError. Ou como eu poderia refatorar meu código para evitar esse problema?
arge eu tentaria chamar o arg.plan_B()que pode gerar um AttributeErrordevido a argnão fornecer um plano B
plan_Blevantar exceções
plan_Boutra função que retornaTrueem caso de sucesso eFalseem exceção? Então, oexceptbloco externo poderia ser apenasif not try_plan_B(): raise