Python

Errores y excepciones en Python: evita que tu programa muera en el intento

Aprende a manejar errores y excepciones en Python de forma práctica. Entenderás qué ocurre cuando un programa falla, cómo leer un traceback y cómo usar try, except, else, finally y raise para …

Contenido de la guía
01 Cuando todo iba bien

Tu programa funciona perfectamente… hasta que el usuario hace algo que no esperabas.

Imagina que tu programa pregunta la edad del usuario. Mientras recibe valores como 18, 25 o 42, todo parece estar bajo control.

Pero el software vive en el mundo real. Un usuario escribe hola donde tú esperabas un número y Python encuentra una situación que no puede resolver siguiendo el camino normal de ejecución.

La idea importante

El programa podía estar perfectamente escrito y aun así encontrarse durante la ejecución con una situación inesperada. Si no existe una respuesta para ella, el flujo normal se interrumpe.

?

La pregunta interesante ya no es solamente «¿cómo evito los errores?», sino: ¿qué debería hacer mi programa cuando uno ocurra?

02 Del fallo al control
Nuestro recorrido

Qué vamos a aprender

No vamos a memorizar palabras como try, except o finally de forma aislada. Vamos a seguir el recorrido completo de un fallo: observar qué ocurrió, recuperar el flujo y finalmente diseñar una respuesta consciente.

1 Observar

Entender el fallo

Provocaremos errores y aprenderemos a leer la información que Python entrega cuando algo sale mal.

2 Responder

Recuperar el flujo

Interceptaremos excepciones concretas y definiremos una respuesta sin ocultar qué fue lo que ocurrió.

3 Diseñar

Controlar el comportamiento

Utilizaremos distintos caminos de ejecución para decidir qué sucede cuando una operación falla, funciona o necesita ejecutar una acción final.

La meta de esta guía

Construir un programa que no colapse simplemente porque el usuario introdujo algo inesperado.

Entrada inválida Respuesta controlada Programa continúa
Flujo de una excepción: sin manejo termina; manejada permite continuar.
Figura 1 — Una excepción interrumpe el flujo normal; al manejarla, el programa puede recuperarse y continuar.
04 Antes de manejar el fallo
Dos momentos diferentes

Error no siempre significa lo mismo

Antes de aprender a manejar excepciones conviene distinguir dos situaciones que, aunque ambas producen mensajes de error, ocurren en momentos diferentes.

Antes de ejecutar normalmente

Error de sintaxis

print("Hola"

Python no puede interpretar correctamente la estructura del programa. El código ni siquiera puede comenzar su ejecución normal.

Durante la ejecución

Excepción

resultado = 10 / 0

Esta instrucción es perfectamente válida para Python. El problema aparece cuando intenta ejecutarla: ningún número puede dividirse entre cero.

!
Qué nos interesa ahora

En esta guía nos centraremos especialmente en las excepciones que aparecen mientras el programa se está ejecutando y en cómo diseñar una respuesta para ellas.

Python
numero = 10
divisor = 0

resultado = numero / divisor

print(resultado)
06 El error también trae pistas
Diagnóstico

Cómo leer un traceback

Cuando Python detiene un programa no se limita a decir «algo salió mal». El traceback intenta mostrarnos dónde ocurrió el problema y qué tipo de excepción lo produjo.

ejemplo.py
Traceback (most recent call last):
File "ejemplo.py", line 4, in <module>
resultado = numero / divisor
ZeroDivisionError: division by zero
01 Archivo
02 Línea
03 Instrucción
04 Tipo
05 Mensaje
Un buen punto de partida

En un traceback sencillo mira primero la última línea: normalmente allí encontrarás el tipo de excepción y su mensaje. Después sube hasta la instrucción que la provocó.

Python
numero = 10
divisor = 0

try:
    resultado = numero / divisor
except ZeroDivisionError:
    print("No puedes dividir entre cero.")

print("El programa continúa.")
08 No estamos borrando el error
Flujo de ejecución

Qué hace realmente except

try no convierte una operación peligrosa en una operación segura. Simplemente le indica a Python: «intenta ejecutar esto y, si aparece cierta excepción, ya tengo preparada una respuesta».

try Python intenta ejecutar la operación.
Excepción La ejecución normal se interrumpe.
except Python busca una respuesta compatible.
Distinción importante

Manejar una excepción no significa fingir que nunca ocurrió. Significa controlar qué hará nuestro programa cuando aparezca una situación que conocemos y sabemos cómo responder.

Python
try:
    numero = int(input("Escribe un número: "))
    resultado = 100 / numero

except ValueError:
    print("Debes escribir un número válido.")

except ZeroDivisionError:
    print("El número no puede ser cero.")

else:
    print(f"Resultado: {resultado}")

Estás viendo solo el 60% del contenido. Hazte Premium para acceder a la guía completa.

Comunidad

Comentarios y valoraciones

No hay comentarios aún. ¡Sé el primero en opinar!