top of page

Excepciones

Hasta ahora, hemos tratado el tema de los errores, cuando tenemos un programa grande, ya sabemos que el flujo de ejecución va de arriba hacia abajo, pues, encontrar un error se puede convertir en una tarea tediosa.


Cuando hay un error en una línea del programa, dicho programa se interrumpe en la línea donde se ha generado el error, y, no sigue con la ejecución.


Los errores detectados durante la ejecución se llaman excepciones.


Hay diferentes tipos de error, como ZeroDivisionError, NameError y TypeError.


Tenemos el siguiente programa, donde creamos dos funciones, con dos parámetros, debajo de cada funcion, esta la palabra return, en la primera funcion con una operación de división, y, en la segunda funcion, la palabra return con una operación de multiplicación.


Lo siguiente es solicitar dos valores como int.


A continuación, solicitamos que operación vamos a realizar.


Preguntamos que, si la variable operación es igual a división, se llama a la funcion divide, y, se le pasan los argumentos para los parámetros, que son primer_valor, y, segundo_valor.


Preguntamos, de nuevo, con elif, si la variable operación es igual a multiplicar, en ese caso, se llama a la funcion multiplicar pasando los parámetros.


En caso contrario, que imprima la siguiente frase.


Pulsamos F5, como primer valor, voy a introducir un número, pero, como segundo valor voy a introducir un cero.


Como operación escribo división.


Pulsamos Enter.


Nos da un error de división por cero.


Para gestionar este error, debemos de usar la sentencia try, que busca el error que indiquemos, antes de la línea return a/b de la funcion divide, pulsamos Enter, ponemos try seguido de dos puntos.


La siguiente línea es la operación.


En la siguiente línea, ponemos except dejamos un espacio, y, el error a reconocer, solo debemos de imprimir las iniciales, y, nos saldrá el error, ponemos dos puntos.


En la siguiente línea, usamos print con el siguiente mensaje:


Pulsamos F5, volvemos a introducir un valor como cero, elegimos división, y, vemos como ya no aparece el error, aparece el texto que hemos puesto dentro del print.


Si no hay error, la sentencia except es ignorada.


Su funcionamiento es muy similar al IF.


Si al pulsar F5, en uno de los valores introducimos una letra, nos devuelve el error ValueError, pues, lo arreglamos como sigue:


Si queremos que nos vuelva a solicitar el valor, debajo de print, volvemos a pedir el valor.


En esta ocasión, no se va a interrumpir el programa.


Podemos poner mas de un error a controlar, por ejemplo, vamos a controlar también el error de división por cero, en la línea except de primer valor, usamos el operador lógico or como sigue, cada error debe de ir entre paréntesis.


Podemos si introducimos un carácter, convertirlo en el número 1, para ello, borramos los dos print debajo de except, y, ponemos la variable primer_valor y la igualamos a 1.


Podemos antes de try, usar un bucle while e igualamos a true, lo que se convierte en un bucle infinito, como sigue:


Debajo de la variable, ponemos break, el resto es igual.


¿Qué va a ocurrir?

Bien, el bucle while siempre va a ser true, por lo que se convierte en un bucle infinito, siempre que estemos introduciendo un valor numérico va a leer break, que está dentro de try, y, salta las líneas de except.


En otras palabras, si ha tenido éxito la entrada de datos, no va a leer except, pero, si introducimos un dato erróneo, pasa a except, sin pasar por break, como estamos en un bucle infinito, volverá a pedirnos el valor a introducir.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page