So che se voglio rilanciare un'eccezione, lo uso semplicemente raise
senza argomenti nel rispettivo except
blocco. Ma data un'espressione annidata come
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
come posso rilanciare SomeError
senza rompere la traccia dello stack? raise
solo in questo caso rialzerebbe il più recente AlsoFailsError
. O come posso rifattorizzare il mio codice per evitare questo problema?
plan_B
un'altra funzione che ritornaTrue
in caso di successo eFalse
su eccezione? Quindi ilexcept
blocco esterno potrebbe essere soloif not try_plan_B(): raise