En Python se dan dos tipos de errores principales. Los errores de sintaxis y las excepciones.
Los errores de sintaxis o interpretación, son muy comunes.
Su estructura suele ser la que aparece en el ejemplo siguiente:
>>> while True print('Hello world')
File "<stdin>", line 1
while True print('Hello world')
^
SyntaxError: invalid syntax
En este caso el intérprete de Python, reproduce la línea responsable del error y muestra una “flecha” que apunta al primer lugar donde se detectó este.
En el ejemplo, el error se detecta en la función print(), ya que faltan dos puntos (‘:’) antes del mismo.
El error ha sido provocado (o al menos detectado) en el elemento que precede a la flecha. Dentro de la declaración del error se muestran el nombre del archivo y el número de línea, lo cual te permitirá localizar con facilidad su ubicación exacta.
Excepciones
Se llama excepciones a errores detectados durante la ejecución del código que no son incondicionalmente fatales.
Esto quiere decir que pueden ser resueltos con una condición y por ello Python nos ofrece condiciones para manejarlos.
Cuando no son gestionadas por el código, resultan en en mensajes de error:
Veamos algunos ejemplos.
>>> 10 * (1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> 4 + spam*3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'spam' is not defined
>>> '2' + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
Explicando un poco el ejemplo vemos que estrutura tiene.
En Python existen diferentes tipos de excepciones y el tipo a que corresponde se imprime como parte del mensaje.
En el ejemplo los tipos son: ZeroDivisionError, NameError y TypeError.
La cadena mostrada como tipo de la excepción es el nombre de la excepción predefinida que ha ocurrido.
Esta convención es válida para todas las excepciones predefinidas del intérprete, y aunque no tiene por que ser así para excepciones definidas por el usuario, se recomienda su uso.
La parte anterior del mensaje de error muestra el contexto donde ocurrió la excepción, en forma de seguimiento de pila.
En general, contiene un seguimiento de pila que enumera las líneas de origen; sin embargo, no mostrará las líneas leídas desde la entrada estándar.
El resto del mensaje provee información basado en el tipo de la excepción y qué la causó.
La última línea de los mensajes de error indica qué ha sucedido.
Por último debemos saber que los nombres de las excepciones estándar son identificadores incorporados al intérprete (no son palabras clave reservadas).
En otro articulo hablare de como capturar las excepciones