Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Diagramas de Manejo de Errores

En esta sección visualizaremos cómo funciona el manejo de errores en Python para ayudar a comprender su estructura y comportamiento.

Jerarquía de Excepciones

BaseExceptionSystemExitKeyboardInterruptExceptionStopIterationArithmeticErrorLookupErrorRuntimeErrorNameErrorTypeErrorValueErrorZeroDivisionErrorOverflowErrorIndexErrorKeyErrorRecursionErrorMiErrorPersonalizadoLeyendaExcepciones BaseExcepciones ComunesExcepciones EspecíficasExcepciones Personalizadas  
























Flujo de Manejo de Excepciones

InicioEjecutar códigoen bloque try¿Ocurreexcepción?¿Hay manejadorpara esta excepción?Ejecutar bloqueexcept correspondienteEjecutar bloqueelse (si existe)Ejecutar bloquefinally (si existe)Propagar excepciónal nivel superiorFin

try: # Código que puede generar excepciones numero = int(input("Ingrese un número: ")) resultado = 10 / numero print(f"El resultado es: {resultado}") except ValueError: # Se ejecuta si ocurre ValueError print("Error: Debe ingresar un número válido") except ZeroDivisionError: # Se ejecuta si ocurre ZeroDivisionError print("Error: No se puede dividir por cero") except Exception as e: # Se ejecuta para otras excepciones print(f"Error inesperado: {e}") else: # Se ejecuta si no ocurre ninguna excepción print("Operación completada con éxito") finally: # Se ejecuta siempre, haya o no excepciones print("Proceso finalizado")

NoNo

Creación de Excepciones Personalizadas

Excepción Personalizada

class ErrorDatoInvalido(Exception): """Excepción para datos que no cumplen con los requisitos."""

def __init__(self, valor, mensaje="Valor no válido"):
    self.valor = valor
    self.mensaje = mensaje
    super().__init__(f"{mensaje}: {valor}")

def __str__(self):
    return f"{self.mensaje}: {self.valor}"

def validar_edad(edad): if not isinstance(edad, int): raise ErrorDatoInvalido(edad, "La edad debe ser un número entero") if edad < 0 or edad > 120: raise ErrorDatoInvalido(edad, "La edad debe estar entre 0 y 120") return True

try: validar_edad("veinticinco") except ErrorDatoInvalido as e: print(f"Error: {e}")

Herencia de ExcepcionesExceptionErrorAplicacionErrorValidacionErrorDatoInvalidoErrorConexion Organizaciónjerárquica

Patrones de Manejo de Errores

Patrones de Manejo de ErroresEAFP(Es más fácil pedir perdón que permiso)

Estilo EAFP (Pythónico)

try: valor = diccionario["clave"] resultado = 10 / valor except KeyError: print("La clave no existe") except ZeroDivisionError: print("No se puede dividir por cero")

LBYL(Mira antes de saltar)

Estilo LBYL (menos Pythónico)

if "clave" in diccionario: valor = diccionario["clave"] if valor != 0: resultado = 10 / valor else: print("No se puede dividir por cero") else: print("La clave no existe")

Estos diagramas te ayudarán a visualizar cómo funciona el manejo de errores en Python, facilitando su comprensión y uso efectivo en tus programas.