Excepciones: continuación
Este enfoque tiene una desventaja importante: si existe la posibilidad de que más de una excepción se salte a un apartado except:
, puedes tener problemas para descubrir lo que realmente sucedió.
Al igual que en el código en el editor. Ejecútalo y ve lo qué pasa.
El mensaje: Oh cielos, algo salio mal...
que aparece en la consola no dice nada acerca de la razón, mientras que hay dos posibles causas de la excepción:
- Datos no enteros fueron ingresados por el usuario.
- Un valor entero igual a
0
fue asignado a la variablex
.
Técnicamente, hay dos formas de resolver el problema:
- Construir dos bloques consecutivos try-except, uno por cada posible motivo de excepción (fácil, pero provocará un crecimiento desfavorable del código).
- Emplear una variante más avanzada de la instrucción.
Se parece a esto:
try:
:
except exc1:
:
except exc2:
:
except:
:
Así es como funciona:
- Si el
try
lanza la excepciónexc1
, esta será manejada por el bloqueexcept exc1:
. - De la misma manera, si el
try
lanza la excepciónexc2
, esta será manejada por el bloqueexcept exc2:
. - Si el
try
lanza cualquier otra excepción, será manejado por el bloque sin nombreexcept
.
Pasemos a la siguiente parte del curso y veámoslo en acción.