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
EdadInvalidaErrorque se lanza cuando se ingresa una edad negativa. - La clase
EdadInvalidaErrorhereda de la clase baseExceptiony permite mostrar un mensaje de error específico. - En la función
verificar_edad, si se ingresa una edad negativa, se lanza la excepciónEdadInvalidaError. - El bloque
tryintenta ejecutar la función, y si se lanza la excepción, el bloqueexceptla captura y muestra el mensaje de error.
- Define una excepción personalizada
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
SaldoInsuficienteErrorque se lanza cuando se intenta retirar más dinero del disponible. - La clase
CuentaBancariatiene métodos para depositar y retirar dinero. - Si intentas retirar más dinero del disponible, se lanza la excepción
SaldoInsuficienteError.
- Define una excepción personalizada
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...