Modulo 8: Manejo de Excepciones y Errores
▸ python-desde-cero/manejo-de-excepciones-errores
@yoezequiel 12-03-2025
3️⃣3️⃣ Tipos de errores en Python
🔹 ¿Qué son los errores y excepciones en Python?
- Un error es un problema en el código que impide su ejecución.
- Una excepción es un evento que ocurre durante la ejecución y que puede ser manejado para evitar que el programa se detenga abruptamente.
🔹 Tipos de errores comunes en Python
Tipo de error | Descripción | Ejemplo |
---|---|---|
SyntaxError | Error en la sintaxis del código. | print("Hola" (falta cerrar paréntesis) |
NameError | Se intenta usar una variable que no está definida. | print(variable_no_definida) |
TypeError | Se realiza una operación con tipos incompatibles. | 5 + "texto" |
IndexError | Se accede a un índice fuera del rango de una lista. | lista = [1, 2]; print(lista[5]) |
KeyError | Se intenta acceder a una clave inexistente en un diccionario. | dic = {"a": 1}; print(dic["b"]) |
ZeroDivisionError | División entre cero. | 10 / 0 |
ValueError | Se proporciona un valor incorrecto a una función. | int("texto") |
🔹 Ejemplo de errores comunes
# NameError
print(nombre) # Error porque 'nombre' no está definido
# TypeError
print(5 + "Hola") # Error porque no se pueden sumar un número y un texto
# ZeroDivisionError
print(10 / 0) # Error porque no se puede dividir entre cero
3️⃣4️⃣ Uso de try
, except
, else
y finally
🔹 ¿Cómo manejar excepciones en Python?
- Python permite manejar errores con
try
yexcept
, evitando que el programa se detenga abruptamente. - Se pueden capturar errores específicos o generales.
📌 Estructura básica de try
y except
try:
# Código que puede generar un error
resultado = 10 / 0
except ZeroDivisionError:
# Se ejecuta si hay un error de división por cero
print("Error: No se puede dividir por cero")
📌 Capturar múltiples excepciones
try:
numero = int(input("Ingresa un número: "))
resultado = 10 / numero
except ZeroDivisionError:
print("Error: No puedes dividir por cero.")
except ValueError:
print("Error: Debes ingresar un número válido.")
📌 Uso de else
: Código que se ejecuta solo si no hay error
try:
numero = int(input("Ingresa un número: "))
resultado = 10 / numero
except ZeroDivisionError:
print("Error: No puedes dividir por cero.")
else:
print(f"El resultado es {resultado}") # Se ejecuta solo si no hay error
📌 Uso de finally
: Código que siempre se ejecuta
try:
archivo = open("datos.txt", "r")
contenido = archivo.read()
except FileNotFoundError:
print("Error: El archivo no existe.")
finally:
print("Este mensaje siempre se mostrará, haya error o no.")
🔹 El bloque finally
se usa para limpiar recursos, cerrar conexiones, etc.
3️⃣5️⃣ Excepciones personalizadas con raise
🔹 ¿Qué es raise
?
- La palabra clave
raise
permite lanzar errores personalizados en Python. - Se usa cuando queremos forzar que se genere una excepción específica.
📌 Ejemplo de uso de raise
def dividir(a, b):
if b == 0:
raise ZeroDivisionError("No se puede dividir por cero.")
return a / b
print(dividir(10, 2)) # 5.0
print(dividir(10, 0)) # Lanza un ZeroDivisionError
📌 Creando nuestras propias excepciones
Podemos definir nuestras propias clases de excepciones heredando de Exception
.
class ErrorPersonalizado(Exception):
pass
def verificar_edad(edad):
if edad < 18:
raise ErrorPersonalizado("Debes ser mayor de edad.")
print("Acceso permitido.")
try:
verificar_edad(16)
except ErrorPersonalizado as e:
print(f"Excepción atrapada: {e}")