¿Qué ocurre con mi primera excepción (A
) cuando aparece el segundo (B
) en el siguiente código?Planteando excepciones cuando ya existe una excepción en Python 3
class A(Exception): pass
class B(Exception): pass
try:
try:
raise A('first')
finally:
raise B('second')
except X as c:
print(c)
Si se ejecuta con X = A
me sale:
Traceback (most recent call last): File "raising_more_exceptions.py", line 6, in raise A('first') __main__.A: first During handling of the above exception, another exception occurred: Traceback (most recent call last): File "raising_more_exceptions.py", line 8, in raise B('second') __main__.B: second
Pero si X = B
me sale:
second
Preguntas
- dónde se fue mi primera excepción?
- ¿Por qué solo se puede atrapar la excepción más externa?
- ¿Cómo elimino la excepción más externa y resubico las excepciones anteriores?
Update0
Esta pregunta se refiere específicamente a Python 3, ya que su manejo de excepciones es bastante diferente a Python 2.
Las respuestas parecen estar descuidando el hecho de que todavía estoy obteniendo un rastreo completo cuando no se detecta la excepción. ¿Por favor explique? –