Programación

Errores y excepciones en Python: cómo leerlos y gestionarlos

Cómo entender los mensajes de error de Python y evitar que un fallo corte tu programa, según el tutorial oficial.

Enviar por WhatsApp

En Python hay, según el tutorial oficial, al menos dos tipos de errores: los errores de sintaxis y las excepciones. Un error de sintaxis impide que el programa empiece; una excepción aparece cuando el programa ya se está ejecutando y algo sale mal. Saber distinguirlos y leer el mensaje es la mitad de la solución.

Los dos tipos de error del tutorial de Python.Error de sintaxis: El código está mal escrito; El programa no llega a empezar; Ej.: SyntaxError. Excepción: Ocurre al ejecutarse; Se puede gestionar; Ej.: NameError, TypeError, ZeroDivisionErrorCOMPARATIVAError de sintaxisEl código está mal escritoEl programa no llega a empezarEj.: SyntaxErrorExcepciónOcurre al ejecutarseSe puede gestionarEj.: NameError, TypeError,ZeroDivisionError
Los dos tipos de error del tutorial de Python.

Errores de sintaxis

Se producen cuando el código no está bien escrito, por ejemplo si falta algo. Python te muestra la línea y unas flechas que señalan dónde detectó el problema:

while True print('Hola')
SyntaxError: invalid syntax

La documentación avisa de que el lugar señalado no siempre es el que hay que arreglar: aquí se detecta en print(), pero falta el signo de dos puntos (:) justo antes.

Excepciones

Una instrucción puede estar bien escrita y fallar al ejecutarse. Son las excepciones, y no son necesariamente fatales: puedes gestionarlas. Estos son los ejemplos del tutorial:

10 * (1 / 0)      # ZeroDivisionError: division by zero
4 + spam * 3      # NameError: name 'spam' is not defined
'2' + 2           # TypeError: can only concatenate str (not "int") to str
Una excepción y su mensaje.>>> 10 * (1 / 0) | Traceback (most recent call last): | ZeroDivisionError: division by zeroEN LA TERMINALPython>>> 10 * (1 / 0)Traceback (most recent call last):ZeroDivisionError: division by zero
Una excepción y su mensaje.

Cómo leer un mensaje de error

  1. La última línea dice qué ha pasado: el tipo de excepción (NameError) y una explicación.
  2. Lo anterior (el traceback) muestra el contexto: en qué archivo y en qué línea ocurrió, y qué llamadas llevaron hasta ahí.
  3. Empieza por la última línea y sube hasta la línea de tu código.

Gestionar excepciones con try y except

Para que un fallo no corte el programa, envuelve el código dudoso en try y captura la excepción concreta:

try:
    numero = int(input("Dime un número: "))
    print(10 / numero)
except ValueError:
    print("Eso no es un número.")
except ZeroDivisionError:
    print("No se puede dividir entre cero.")

Captura tipos concretos, no todos a la vez: así no ocultas errores que sí deberías ver.

Cómo leer un error.1. Lee la última línea: tipo y explicación 2. Sube por el traceback hasta tu código 3. Cambia una sola cosa 4. Vuelve a ejecutarPASO A PASO1PASO 1Lee laúltimalínea: tipoyexplicación2PASO 2Sube por eltracebackhasta tucódigo3PASO 3Cambia unasola cosa4FINALVuelve aejecutar
Cómo leer un error.

Consejos para empezar

  • Lee el error entero antes de cambiar nada.
  • Cambia una cosa cada vez y vuelve a probar.
  • Si no lo entiendes, busca el nombre de la excepción en la documentación de Python.

Para una guía más general de cómo encontrar fallos, mira depurar errores en programación. Y si aún no tienes Python instalado, empieza por instalar Python y escribir tu primer programa.