- 1. Introducción
- 2. ¿Qué es un Error en Python?
- 2.1. Ahora prueba tu
- 3. ¿Qué es una Excepción?
- 3.1. Bloques
tryyexcept - 3.2. Bloques
elseyfinally - 3.3. Ahora prueba tu
- 3.1. Bloques
- 4. Creación de Excepciones Personalizadas
- 4.1. Ahora prueba tu
- 5. Prácticas Recomendadas para la Gestión de Excepciones
- 6. Ejercicio
- 7. Referencias
1. Introducción
En Python, los errores y las excepciones ocurren cuando el intérprete se encuentra con algo inesperado, como una operación matemática imposible o una referencia a una variable no definida. Es fundamental aprender cómo gestionarlos para crear programas robustos y capaces de manejar situaciones imprevistas sin interrumpir su ejecución.
En este tutorial, aprenderemos a:
- Diferenciar entre errores y excepciones.
- Utilizar bloques
try,except,elseyfinally. - Crear excepciones personalizadas.
- Prácticas recomendadas para la gestión de errores.
- Resolver ejercicios prácticos para consolidar conocimientos.
2. ¿Qué es un Error en Python?
Tipos de errores comunes (ver lista completa Python Built-in Exceptions):
SyntaxError: Se produce cuando hay un error en la sintaxis del código.
# Ejemplo de SyntaxError
>>> print("Hola mundo)
File "<stdin>", line 1
print("Hola mundo)
^
SyntaxError: unterminated string literal (detected at line 1)
>>>
NameError: Ocurre cuando intentas acceder a una variable que no ha sido definida.
>>> print(variable_no_definida)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'variable_no_definida' is not defined
TypeError: Se genera al intentar operar con tipos incompatibles.
>>> resultado = "3" + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
ValueError: Aparece cuando se usa un valor inapropiado para una operación.
>>> numero = int("texto")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'texto'
2.1. Ahora prueba tu
Encuentra y corrige los errores en el siguiente código:
num1 = "5"
num2 = 10
resultado = num1 * num2
print("El resultado es: " + resultado)
3. ¿Qué es una Excepción?
Una excepción es un error que ocurre en tiempo de ejecución, lo que detiene la ejecución normal del programa. Python proporciona mecanismos para “atrapar” estas excepciones y gestionar el flujo de control cuando ocurren.
3.1. Bloques try y except
El bloque try se utiliza para encerrar el código que podría generar una excepción. Si se genera una excepción en este bloque, el flujo pasa al bloque except.
try:
numero = int(input("Introduce un número: "))
resultado = 10 / numero
print(f"El resultado es: {resultado}")
except ZeroDivisionError:
print("¡No se puede dividir por cero!")
except ValueError:
print("Por favor, introduce un valor numérico.")
En este ejemplo, se gestionan dos excepciones:
- ZeroDivisionError: si el usuario introduce un 0 como divisor.
- ValueError: si el usuario introduce un valor no numérico.
3.2. Bloques else y finally
else: Se ejecuta si no se produce ninguna excepción.finally: Se ejecuta independientemente de si se produce una excepción o no, útil para liberar recursos como archivos abiertos o conexiones a bases de datos.try: numero = int(input("Introduce un número: ")) resultado = 10 / numero except ZeroDivisionError: print("¡No se puede dividir por cero!") else: print(f"El resultado es: {resultado}") finally: print("Ejecución finalizada, gracias por usar el programa.")
3.3. Ahora prueba tu
Modifica el siguiente código para que gestione las posibles excepciones ZeroDivisionError y ValueError, y utilice finally para imprimir un mensaje final.
numero = int(input("Introduce un número: "))
resultado = 100 / numero
print(f"El resultado es: {resultado}")
4. Creación de Excepciones Personalizadas
Podemos definir nuestras propias excepciones heredando de la clase base Exception. Esto es útil cuando queremos definir condiciones de error específicas en nuestro programa.
class ErrorPersonalizado(Exception):
def __init__(self, mensaje):
self.mensaje = mensaje
try:
edad = int(input("Introduce tu edad: "))
if edad < 0:
raise ErrorPersonalizado("La edad no puede ser un número negativo.")
print(f"Tienes {edad} años.")
except ErrorPersonalizado as e:
print(e.mensaje)
En este ejemplo, se levanta una excepción personalizada si el valor de edad es negativo
4.1. Ahora prueba tu
Define una excepción personalizada llamada SaldoInsuficiente que se active si el saldo en una cuenta bancaria es menor al monto a retirar. Luego, gestiona la excepción en un pequeño programa.
5. Prácticas Recomendadas para la Gestión de Excepciones
- No uses excepciones para el flujo de control normal: Las excepciones deben gestionarse solo para errores y no como una estructura de control estándar.
Captura excepciones específicas en lugar de usar
exceptgenérico: Esto facilita la depuración.try: # Código except (ZeroDivisionError, ValueError): # Manejo específico de excepcionesUsa
finallypara liberar recursos: Por ejemplo, cerrar un archivo o una conexión a base de datos.Levanta excepciones personalizadas cuando tenga sentido: Útil para condiciones específicas de la aplicación.
6. Ejercicio
Enunciado:
Implementa un programa que simule un cajero automático. El programa debe:
- Solicitar al usuario que ingrese el monto a retirar.
- Comprobar que el monto sea numérico y positivo.
- Gestionar un error de
SaldoInsuficientesi el monto a retirar excede el saldo disponible. - Mostrar mensajes adecuados en cada caso y, al finalizar, informar que la transacción ha terminado.