Patrones de Excepciones:
Try-Catch-Finally estructurado
Separar claramente el bloque donde puede ocurrir el error (try), el manejo específico (catch) y la limpieza/liberación de recursos (finally).
Operaciones críticas como escritura en base de datos, llamadas a API externas.
Exception Wrapping
Capturar una excepción técnica y envolverla en una excepción de negocio más significativa para la capa superior.
Cuando no quieres exponer detalles técnicos al usuario final.
Centralized Exception Handling
Un punto único (middleware, interceptor) que capture y procese todas las excepciones.
En APIs y microservicios para estandarizar respuestas de error.
Retry Pattern
Reintentar la operación fallida un número limitado de veces antes de fallar.
Llamadas a servicios externos con fallos intermitentes.
Circuit Breaker
Detener temporalmente las llamadas a un servicio que está fallando para evitar saturar el sistema.
Integraciones con servicios externos poco confiables.
Fail Fast
Detectar y abortar lo antes posible ante datos inválidos o estados incorrectos.
Validaciones iniciales de parámetros o precondiciones.
Patrones de Transacciones de negocio:
PatrónDescripciónCuándo usarlo
Transaction Script
Toda la lógica de negocio y control de transacción está en un único bloque secuencial.
Procesos simples donde todas las operaciones están en la misma base de datos.
Unit of Work
Acumula cambios y los envía a la base de datos como una sola transacción.
ORMs como Entity Framework o Hibernate.
Two-Phase Commit (2PC)
Coordinación entre múltiples recursos transaccionales (bases de datos, colas, etc.) con confirmación en dos fases.
Bancos, ERP distribuidos.
Saga Pattern
Divide una transacción larga en pasos locales, cada uno con una operación de compensación.
Microservicios o procesos de negocio distribuidos.
Eventual Consistency
Aceptar que no todos los sistemas estarán actualizados inmediatamente, pero se sincronizarán con el tiempo.
Sistemas distribuidos donde la disponibilidad es prioritaria.
Compensating Transaction
Si un paso falla, ejecutar operaciones inversas para revertir los efectos previos.
Reservas, pedidos, movimientos de inventario.