Saltearse al contenido

Excepciones personalizadas

En Python, además de las excepciones integradas, puedes crear tus propias excepciones para representar errores específicos de tu aplicación. Esto ayuda a que tu código sea más legible, mantenible y fácil de depurar.

¿Cuándo usar una excepción personalizada?

Sección titulada «¿Cuándo usar una excepción personalizada?»
  • Cuando necesitas distinguir errores propios de tu lógica de negocio.
  • Para mejorar los mensajes de error y la documentación de tu API.
  • Cuando quieres que otros desarrolladores puedan capturar errores específicos de tu módulo o librería.

Para definir una excepción personalizada, crea una nueva clase que herede de Exception o de alguna subclase de excepción estándar.

custom_exception.py
class MiError(Exception):
"""Excepción personalizada para errores específicos."""
pass
def dividir(a, b):
if b == 0:
raise MiError("No se puede dividir entre cero usando MiError.")
return a / b
try:
dividir(10, 0)
except MiError as e:
print(f"Ocurrió un error personalizado: {e}")
  • Usa nombres descriptivos para tus excepciones (ejemplo: ArchivoNoEncontradoError).
  • Documenta cada excepción personalizada con un docstring.
  • Si tu excepción necesita información adicional, puedes sobrescribir el método __init__.
custom_init.py
class ArchivoNoEncontradoError(Exception):
def __init__(self, archivo, mensaje="Archivo no encontrado"):
self.archivo = archivo
self.mensaje = f"{mensaje}: {archivo}"
super().__init__(self.mensaje)
try:
raise ArchivoNoEncontradoError("datos.csv")
except ArchivoNoEncontradoError as e:
print(e)

Puedes crear una jerarquía de excepciones personalizadas para organizar mejor los errores de tu aplicación.

hierarchy.py
class ErrorAplicacion(Exception):
pass
class ErrorConexion(ErrorAplicacion):
pass
class ErrorValidacion(ErrorAplicacion):
pass
try:
raise ErrorValidacion("Datos inválidos")
except ErrorAplicacion as e:
print(f"Error de la aplicación: {e}")
  • Las excepciones personalizadas mejoran la claridad y el control de errores.
  • Hereda siempre de Exception o una subclase.
  • Documenta y nombra tus excepciones de forma clara.
  • Puedes crear jerarquías para organizar los errores de tu proyecto.

¿Quieres aportar más ejemplos o mejorar esta guía?
Consulta la guía de contribución y ayuda a la comunidad PyDocs.