Excepciones: continuación
Mira el código en el editor. ¿Qué pasará aquí?
La primera coincidencia es la que contiene ZeroDivisionError
. Significa que la consola mostrará:
¡División entre Cero!
FIN.
¿Cambiará algo si intercambiamos los dos except
? Justo como aquí abajo:
try:
y = 1 / 0
except ArithmeticError:
print("¡Problema aritmético!")
except ZeroDivisionError:
print("¡División entre Cero!")
print("FIN.")
El cambio es radical: la salida del código es ahora:
¡Problema aritmético!
FIN.
¿Por qué, si la excepción planteada es la misma que antes?
La excepción es la misma, pero la excepción más general ahora aparece primero: también capturará todas las divisiones entre cero. También significa que no hay posibilidad de que alguna excepción llegue a ZeroDivisionError. Ahora es completamente inalcanzable.
Recuerda:
- ¡El orden de las excepciones importa!
- No pongas excepciones más generales antes que otras más concretas.
- Esto hará que el último sea inalcanzable e inútil.
- Además, hará que el código sea desordenado e inconsistente.
- Python no generará ningún mensaje de error con respecto a este problema.