Module (47%)
Section (48%)

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.


Code

try:
y = 1 / 0
except ZeroDivisionError:
print("¡División entre Cero!")
except ArithmeticError:
print("¡Problema aritmético!")

print("FIN.")
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×