En Python se pueden observar 2 tipos de
errores , los sintácticos y las excepciones.
Comencemos por los errores de sintaxis,
llamados también errores de interpretación
>>> a=10
>>> if a print (a)
File "<stdin>", line
1
if a print (a)
^
SyntaxError: invalid syntax
>>>
El interprete Python apunta con un a
flecha a donde detecta el error
Por otra parte las excepciones son
errores detectados durante el tiempo de ejecución:
>>> a/(1/0)
Traceback (most recent call last):
File "<stdin>", line
1, in <module>
ZeroDivisionError: division by zero
>>> a+b
Traceback (most recent call last):
File "<stdin>", line
1, in <module>
NameError: name 'b' is not defined
>>> b=b
Traceback (most recent call last):
File "<stdin>", line
1, in <module>
NameError: name 'b' is not defined
>>> b = "b"
>>> a+b
Traceback (most recent call last):
File "<stdin>", line
1, in <module>
TypeError: unsupported operand type(s)
for +: 'int' and 'str'
>>>
Puede verse en la última línea el
tipo de excepción y lo que sucedió.
Estas
son tipos
de excepciones estándares
predefinidas
ZeroDivisionError ; NameError ; TypeError, son
identificadores incorporados al intérprete (no son palabras clave
reservadas).
Por ejemplo una interrupción generada
por el usuario se muestra con la excepción KeyboardInterrupt
Manejo de excepciones
Los errores de ejecución son llamados
excepciones. Si durante la ejecución de un programa, surge
una excepción (error) y este no es manejada, la excepción se
propaga hacia el bloque que la invocó, si éste tampoco la maneja,
la excepción continua propagándose hasta llegar a la parte
importante del programa y si ésta tampoco la maneja se interrumpe la
ejecución del programa.
Para el manejo de excepciones Python
utiliza la sentencia try, except y finally
try: En este bloque se ubica todo el
código que pueda generar una excepción
except: viene luego del bloque try y se
encarga que capturar las excepciones y da la oportunidad de
procesarlas adecuadamente
Veamos el siguiente
ejemplo:
>>> valor=
int(input("Ingrese un valor entero: "))
Ingrese un valor entero:
"hola"
Traceback (most recent
call last):
File "<stdin>",
line 1, in <module>
ValueError: invalid
literal for int() with base 10: '"hola"'
>>>
Al no ingresar el entero
esperado y escribir la palabra “hola” vemos que aparece la
excepción “ValueError”
Ahora veamos como tratar
la excepción con la sentencia try
>>> valor = "Esto
debe ser un entero"
>>> while True:
... try:
... valor=
int(input("Ingrese un valor entero: "))
... break
... except:
... print
("Error. Ingrese un valor entero")
...
Ingrese un valor entero:
"hola"
Error. Ingrese un valor
entero
Ingrese un valor entero:
hola
Error. Ingrese un valor
entero
Ingrese un valor entero:
"un valor entero"
Error. Ingrese un valor
entero
Ingrese un valor entero:
un valor entero
Error. Ingrese un valor
entero
Ingrese un valor entero:
20
>>>
Puede observarse que dado
el “no ingreso de un entero” el código marca el error con
“Error. Ingrese un valor
entero”
Hasta que es ingresado el
número 20 que cumple con la condición
………………………………………………………….......................................
Dentro de un bloque try
pueden ocurrirse distintos tipos de excepciones por lo que es posible
utilizar varias sentencias except una para cada error, esto se hace
especificando los nombres de las excepciones a continuación de
except , entre paréntesis, separadas por comas y dos puntos al
final:
except (RuntimeError, TypeError, NameError):
También luego de un bloque try es posible colocar varios bloques
except y se ejecuta solo uno de ellos
La sentencia try podríamos
interpretarla de la siguiente forma:
try:
Si se produce tal error
except:
haga tal cosa
Al final puede ubicarse la
sentencia finally, para escribir sentencias de finalización que
suelen ser de limpieza, la particularidad de este bloque es que se
ejecuta siempre, haya excepción o no, aunque no es necesario que
finally este presente
Como es que actúa Python
Al encontrarse con estos
bloques. Python comienza a ejecutar las instrucciones que se
encuentran dentro de un bloque
try
normalmente. Si durante la ejecución de esas instrucciones se
levanta una excepción, Python interrumpe la ejecución en el punto
exacto en que surgió la excepción y pasa a la ejecución del
bloque except
correspondiente y al terminar de ejecutar el bloque
correspondiente, se pasa a la ejecución
del bloque finally
,
si se encuentra definido
No hay comentarios:
Publicar un comentario