Eu sei que se eu quiser relançar uma exceção, eu simplesmente uso raise
sem argumentos no respectivo except
bloco. 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 SomeError
sem quebrar o rastreamento de pilha? raise
sozinho, neste caso, ressuscitaria o mais recente AlsoFailsError
. Ou como eu poderia refatorar meu código para evitar esse problema?
arg
e eu tentaria chamar o arg.plan_B()
que pode gerar um AttributeError
devido a arg
não fornecer um plano B
plan_B
levantar exceções
plan_B
outra função que retornaTrue
em caso de sucesso eFalse
em exceção? Então, oexcept
bloco externo poderia ser apenasif not try_plan_B(): raise