En Python, es posible crear excepciones personalizadas para manejar errores específicos de una aplicación. Esto se logra definiendo una nueva clase que herede de la clase base Exception
. Esto permite implementar un control de errores más detallado y específico en función de las necesidades del proyecto.
Para definir una excepción personalizada, se crea una clase que hereda de Exception
o de alguna de sus subclases. A continuación se muestra la estructura básica para crear una excepción:
class MiExcepcionPersonalizada(Exception):
pass
Esta excepción puede ser utilizada en bloques try-except
como cualquier otra excepción:
try:
raise MiExcepcionPersonalizada("Se ha producido un error personalizado")
except MiExcepcionPersonalizada as e:
print(e)
Es posible agregar más funcionalidades o atributos a la clase de excepción, como pasar mensajes de error o datos adicionales:
class MiExcepcionConMensaje(Exception):
def __init__(self, mensaje, codigo):
super().__init__(mensaje)
self.codigo = codigo
try:
raise MiExcepcionConMensaje("Error con código", 404)
except MiExcepcionConMensaje as e:
print(f"{e} - Código de error: {e.codigo}")
En este ejemplo, se añade un código de error personalizado, que puede ser útil para identificar diferentes tipos de errores.
Un caso común es crear excepciones para validar datos de entrada. Por ejemplo, se puede definir una excepción para valores fuera de un rango permitido:
class ValorFueraDeRangoError(Exception):
def __init__(self, valor, mensaje="Valor fuera del rango permitido"):
self.valor = valor
self.mensaje = mensaje
super().__init__(self.mensaje)
def validar_valor(valor):
if valor < 0 or valor > 100:
raise ValorFueraDeRangoError(valor)
try:
validar_valor(150)
except ValorFueraDeRangoError as e:
print(f"Error: {e.mensaje}. Valor recibido: {e.valor}")
Se pueden crear excepciones personalizadas que hereden de otras excepciones personalizadas, creando una jerarquía de errores:
class ErrorAplicacion(Exception):
pass
class ErrorDeConexion(ErrorAplicacion):
pass
class ErrorDeAutenticacion(ErrorAplicacion):
pass
Esto permite manejar tipos de errores específicos o capturar de forma genérica todos los errores de la aplicación.
Para más información sobre cómo manejar y definir excepciones en Python, puedes consultar la documentación oficial de excepciones en Python.
Jorge García
Fullstack developer