Ejemplo de manejo centralizado de excepciones en Java Spring
🎯 Objetivo ✔ No usar try-catch en cada controlador ✔ Manejar errores desde un solo lugar ( @ControllerAdvice ) ✔ Mostrar páginas amigables (Thymeleaf + Bootstrap) ✔ Mantener separación limpia (MVC) 🧩 1. Escenario de ejemplo Supongamos: 👉 Tienes un módulo de usuarios 👉 Buscas un usuario por ID 👉 Si no existe → lanzar excepción 🧱 2. Excepción personalizada package com.tuempresa.login.exception; public class RecursoNoEncontradoException extends RuntimeException { public RecursoNoEncontradoException(String mensaje) { super(mensaje); } } 🧠 3. Servicio (donde se lanza la excepción) @Service public class UsuarioService { @Autowired private UsuarioRepository repo; public Usuario obtenerPorId(Long id) { return repo.findById(id) .orElseThrow(() -> new RecursoNoEncontradoException("Usuario no encontrado con ID: " + id)); } } 🎮 4. Controlador (SIN try-catch) @Controller @RequestMapping("/usuarios") public ...