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?

🔹 Tipos de errores comunes en Python

Tipo de errorDescripciónEjemplo
SyntaxErrorError en la sintaxis del código.print("Hola" (falta cerrar paréntesis)
NameErrorSe intenta usar una variable que no está definida.print(variable_no_definida)
TypeErrorSe realiza una operación con tipos incompatibles.5 + "texto"
IndexErrorSe accede a un índice fuera del rango de una lista.lista = [1, 2]; print(lista[5])
KeyErrorSe intenta acceder a una clave inexistente en un diccionario.dic = {"a": 1}; print(dic["b"])
ZeroDivisionErrorDivisión entre cero.10 / 0
ValueErrorSe 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?

📌 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?

📌 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}")
Lección Anterior Curso Siguiente Lección