Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →
Excepciones en Python: manejo de errores paso a paso
En Python, las excepciones permiten manejar errores sin que el programa se detenga. En esta guía aprenderás a usar try, except, else, finally y a crear tus propias excepciones.
Tabla de contenidos
1. ¿Qué son las excepciones?
Una excepción es un error que ocurre durante la ejecución del programa. Si no se maneja, el programa se detiene.
print(10 / 0) # ZeroDivisionError
2. try y except
La estructura básica es:
try:
# código que puede fallar
except:
# código que se ejecuta si hay error
Ejemplo:
try:
print(10 / 0)
except ZeroDivisionError:
print("No puedes dividir entre cero")
3. else y finally
try:
num = int("10")
except ValueError:
print("Error al convertir")
else:
print("Todo salió bien")
finally:
print("Fin del programa")
4. Excepciones comunes
- ValueError: conversión inválida
- TypeError: tipo incorrecto
- ZeroDivisionError: división entre cero
- IndexError: índice fuera de rango
- KeyError: clave inexistente
5. Excepciones personalizadas
class EdadInvalida(Exception):
pass
def verificar_edad(edad):
if edad < 0:
raise EdadInvalida("La edad no puede ser negativa")
verificar_edad(-5)
6. Ejercicios
- Manejar un ValueError al convertir texto a número.
- Manejar un ZeroDivisionError.
- Manejar un IndexError.
- Crear una excepción personalizada.
- Usar try/except/else/finally.
try:
num = int("hola")
except ValueError:
print("No es un número")
try:
print(10 / 0)
except ZeroDivisionError:
print("Error: división entre cero")
lista = [1, 2, 3]
try:
print(lista[10])
except IndexError:
print("Índice fuera de rango")
class ErrorPersonalizado(Exception):
pass
raise ErrorPersonalizado("Mi error")
try:
print("Hola")
except:
print("Error")
else:
print("Todo OK")
finally:
print("Fin")
7. Mini‑proyecto: Validador de entrada
def pedir_numero():
try:
num = int(input("Introduce un número: "))
except ValueError:
print("Eso no es un número")
else:
print("Número válido:", num)
finally:
print("Proceso terminado")
pedir_numero()
8. Preguntas frecuentes
¿Debo manejar todas las excepciones?
Solo las que puedan ocurrir en tu programa.
¿Es malo usar except sin especificar?
Sí, es mejor capturar errores específicos.