Curso de python nivel medio

¿Qué es una excepción?

Una excepción es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones. Cuando ocurre un error, como intentar dividir por cero o acceder a un archivo que no existe, Python genera una excepción.

¿Qué es una excepción personalizada?

Una excepción personalizada es una excepción que tú mismo defines en tu código. Es útil cuando quieres manejar errores específicos de tu aplicación de una manera controlada y comprensible.

Cómo crear una excepción personalizada

Para crear una excepción personalizada en Python, defines una nueva clase que hereda de la clase base Exception o de alguna de sus subclases.

Ejemplo de una excepción personalizada

Supongamos que estás creando un programa donde los usuarios ingresan su edad, y deseas lanzar una excepción si la edad ingresada es negativa.

1# Definir una excepción personalizada
2class EdadInvalidaError(Exception):
3    def __init__(self, edad, mensaje="La edad no puede ser negativa"):
4        self.edad = edad
5        self.mensaje = mensaje
6        super().__init__(self.mensaje)
7
8    def __str__(self):
9        return f'{self.edad} -> {self.mensaje}'
10
11# Función para verificar la edad
12def verificar_edad(edad):
13    if edad < 0:
14        raise EdadInvalidaError(edad)
15    print(f"La edad ingresada es: {edad}")
16
17# Ejemplo de uso
18try:
19    edad_ingresada = int(input("Ingresa tu edad: "))
20    verificar_edad(edad_ingresada)
21except EdadInvalidaError as e:
22    print(e)
Salida de Consola!:
Ingresa tu edad: -5
-5 -> La edad no puede ser negativa
  • ¿Qué hace este código?:
    • Define una excepción personalizada EdadInvalidaError que se lanza cuando se ingresa una edad negativa.
    • La clase EdadInvalidaError hereda de la clase base Exception y permite mostrar un mensaje de error específico.
    • En la función verificar_edad, si se ingresa una edad negativa, se lanza la excepción EdadInvalidaError.
    • El bloque try intenta ejecutar la función, y si se lanza la excepción, el bloque except la captura y muestra el mensaje de error.

Ventajas de usar excepciones personalizadas

  • Claridad: Proporciona mensajes de error específicos que son más fáciles de entender que las excepciones estándar.
  • Control: Te permite manejar errores de una manera más precisa y específica, lo que puede hacer que tu programa sea más robusto y fácil de depurar.
  • Mantenimiento: Facilita la identificación y corrección de errores en aplicaciones grandes y complejas.

Ejemplo extendido: Excepciones personalizadas para una cuenta bancaria

Imagina que estás desarrollando una aplicación de cuenta bancaria y quieres manejar situaciones como intentos de retiro de dinero por un monto mayor al saldo disponible.

1# Definir excepciones personalizadas
2class SaldoInsuficienteError(Exception):
3    def __init__(self, saldo, monto, mensaje="Saldo insuficiente para realizar la transacción"):
4        self.saldo = saldo
5        self.monto = monto
6        self.mensaje = mensaje
7        super().__init__(self.mensaje)
8
9    def __str__(self):
10        return f'Intentaste retirar {self.monto}, pero solo tienes {self.saldo} disponible.'
11
12# Clase de cuenta bancaria
13class CuentaBancaria:
14    def __init__(self, saldo=0):
15        self.saldo = saldo
16
17    def depositar(self, monto):
18        self.saldo += monto
19        print(f"Depósito exitoso. Saldo actual: {self.saldo}")
20
21    def retirar(self, monto):
22        if monto > self.saldo:
23            raise SaldoInsuficienteError(self.saldo, monto)
24        self.saldo -= monto
25        print(f"Retiro exitoso. Saldo actual: {self.saldo}")
26
27# Ejemplo de uso
28try:
29    cuenta = CuentaBancaria(100)
30    cuenta.depositar(50)
31    cuenta.retirar(200)  # Esto lanzará la excepción personalizada
32except SaldoInsuficienteError as e:
33    print(e)
Salida de Consola!:
Depósito exitoso. Saldo actual: 150
Intentaste retirar 200, pero solo tienes 150 disponible.
  • ¿Qué hace este código?:
    • Define una excepción personalizada SaldoInsuficienteError que se lanza cuando se intenta retirar más dinero del disponible.
    • La clase CuentaBancaria tiene métodos para depositar y retirar dinero.
    • Si intentas retirar más dinero del disponible, se lanza la excepción SaldoInsuficienteError.

Conclusión

Las excepciones personalizadas te permiten manejar errores específicos de tu aplicación de manera más efectiva. Al crear excepciones personalizadas, puedes proporcionar mensajes de error claros y controlar mejor el flujo de tu programa cuando ocurren situaciones inesperadas. ¡Practica creando tus propias excepciones personalizadas para manejar diferentes escenarios en tus programas Python!

  • Loading...