Saltar a contenido

Manejo de Excepciones: El Arte de Fallar con Elegancia

En programación, un error no siempre es culpa del programador. Puede que un archivo no exista, que la conexión a internet se caiga o que un usuario escriba texto donde se esperaba un número. El bloque try-except permite que el programa siga funcionando a pesar de estos incidentes.


1. La Estructura de Control

Python utiliza cuatro palabras clave para gestionar errores:

  1. try: El bloque de código que "intentamos" ejecutar y que podría fallar.
  2. except: El código que se ejecuta solo si ocurre un error dentro del try.
  3. else: (Opcional) Se ejecuta solo si no hubo ningún error en el try.
  4. finally: Se ejecuta siempre, haya habido error o no. Ideal para tareas de limpieza (cerrar archivos o bases de datos).

2. Captura Específica de Errores

Es una mala práctica usar un except: genérico. Debemos especificar qué error queremos capturar para no ocultar fallos que no conocemos.

Excepción Causa común
ValueError Conversión de datos incompatible (ej. int("hola")).
ZeroDivisionError Intentar dividir un número por cero.
FileNotFoundError Intentar abrir un archivo que no existe.
TypeError Operación entre tipos de datos no compatibles.

Pro Tip: Puedes capturar el mensaje del error usando as: except ValueError as e:. Esto permite imprimir exactamente qué salió mal.


3. ¿Por qué usar finally?

El bloque finally es el "seguro de vida" de tu código. Si abres una conexión a una base de datos en el try y el programa falla a mitad, el finally garantiza que la conexión se cierre, evitando que el servidor se sature o los datos se corrompan.


Reto: El Divisor Seguro

Vas a crear una pequeña calculadora que sea "imposible de romper". Debe manejar tanto errores de escritura como el error de dividir por cero.

Instrucciones: 1. Crea una variable resultado inicializada en 0. 2. Dentro de un bloque try: - Crea una variable a que sea el entero de "10". - Crea una variable b que sea el entero de "0". - Divide a / b y guarda el valor en resultado. 3. Crea un bloque except ZeroDivisionError: - Cambia resultado a la palabra "Error: División por cero". 4. Crea un bloque finally: - Imprime "Cálculo finalizado".

# Crea un código que no se detenga por errores: