Volver a la página principal
martes 24 septiembre 2024
20

Cómo definir excepciones personalizadas en Python

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.

Definición de excepciones personalizadas

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)

Agregar funcionalidades a la excepción

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.

Ejemplos de uso

Excepción personalizada para validar entradas

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}")

Herencia de excepciones personalizadas

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.

Referencia oficial

Para más información sobre cómo manejar y definir excepciones en Python, puedes consultar la documentación oficial de excepciones en Python.

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer