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
0fue 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
trylanza la excepciónexc1, esta será manejada por el bloqueexcept exc1:. - De la misma manera, si el
trylanza la excepciónexc2, esta será manejada por el bloqueexcept exc2:. - Si el
trylanza cualquier otra excepción, será manejado por el bloque sin nombreexcept.
Pasemos a la siguiente parte del curso y veámoslo en acción.