Class GestorExcepciones

java.lang.Object
com.gestorrh.api.exception.GestorExcepciones

@RestControllerAdvice public class GestorExcepciones extends Object
Clase controladora de asesoramiento global para la gestión de excepciones en la API.

Centraliza la captura de errores lanzados desde cualquier capa del sistema (controladores, servicios, etc.) y los transforma en una respuesta JSON estandarizada mediante RespuestaErrorDTO. Utiliza la anotación @RestControllerAdvice para interceptar las excepciones de forma transversal.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.springframework.http.ResponseEntity<RespuestaErrorDTO>
    manejarConcurrencia(org.springframework.orm.ObjectOptimisticLockingFailureException ex, jakarta.servlet.http.HttpServletRequest request)
    Maneja las excepciones de concurrencia producidas cuando dos usuarios intentan modificar el mismo registro simultáneamente.
    org.springframework.http.ResponseEntity<RespuestaErrorDTO>
    manejarExcepcionesDeNegocio(RuntimeException ex, jakarta.servlet.http.HttpServletRequest request)
    Maneja las excepciones genéricas de ejecución que representan violaciones de reglas de negocio.
    org.springframework.http.ResponseEntity<RespuestaErrorDTO>
    manejarExcepcionesGlobales(Exception ex, jakarta.servlet.http.HttpServletRequest request)
    Maneja las excepciones globales de tipo Exception que no han sido capturadas por otros manejadores.
    org.springframework.http.ResponseEntity<RespuestaErrorDTO>
    manejarRecursoNoEncontrado(jakarta.persistence.EntityNotFoundException ex, jakarta.servlet.http.HttpServletRequest request)
    Maneja las excepciones producidas cuando no se encuentra un recurso solicitado en la base de datos.
    org.springframework.http.ResponseEntity<RespuestaErrorDTO>
    manejarValidaciones(org.springframework.web.bind.MethodArgumentNotValidException ex, jakarta.servlet.http.HttpServletRequest request)
    Maneja las excepciones producidas cuando falla la validación de los argumentos de entrada (anotaciones @Valid).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • GestorExcepciones

      public GestorExcepciones()
  • Method Details

    • manejarValidaciones

      @ExceptionHandler(org.springframework.web.bind.MethodArgumentNotValidException.class) public org.springframework.http.ResponseEntity<RespuestaErrorDTO> manejarValidaciones(org.springframework.web.bind.MethodArgumentNotValidException ex, jakarta.servlet.http.HttpServletRequest request)
      Maneja las excepciones producidas cuando falla la validación de los argumentos de entrada (anotaciones @Valid).

      Extrae todos los mensajes de error asociados a los campos del DTO que no han superado las restricciones y genera una respuesta HttpStatus.BAD_REQUEST detallada.

      Parameters:
      ex - La excepción de validación capturada.
      request - La solicitud HTTP en la que se produjo el error, para extraer la URI.
      Returns:
      Una respuesta estructurada con los detalles de los campos que fallaron la validación.
    • manejarExcepcionesDeNegocio

      @ExceptionHandler(java.lang.RuntimeException.class) public org.springframework.http.ResponseEntity<RespuestaErrorDTO> manejarExcepcionesDeNegocio(RuntimeException ex, jakarta.servlet.http.HttpServletRequest request)
      Maneja las excepciones genéricas de ejecución que representan violaciones de reglas de negocio.

      Captura cualquier RuntimeException no manejada específicamente, registrando el error en el log y retornando una respuesta HttpStatus.BAD_REQUEST con el mensaje descriptivo de la excepción.

      Parameters:
      ex - La excepción de negocio o error de ejecución capturado.
      request - La solicitud HTTP donde ocurrió la incidencia.
      Returns:
      Una respuesta de error estandarizada con el mensaje de la excepción.
    • manejarExcepcionesGlobales

      @ExceptionHandler(java.lang.Exception.class) public org.springframework.http.ResponseEntity<RespuestaErrorDTO> manejarExcepcionesGlobales(Exception ex, jakarta.servlet.http.HttpServletRequest request)
      Maneja las excepciones globales de tipo Exception que no han sido capturadas por otros manejadores.

      Este es el último nivel de captura de errores, encargado de interceptar fallos críticos e inesperados en el sistema. Registra la traza completa del error en los logs para su posterior análisis técnico y retorna una respuesta HttpStatus.INTERNAL_SERVER_ERROR estandarizada.

      Parameters:
      ex - La excepción raíz capturada.
      request - La solicitud HTTP donde se produjo el fallo crítico.
      Returns:
      Una respuesta de error genérica con código 500 y recomendaciones de contacto con soporte.
    • manejarRecursoNoEncontrado

      @ExceptionHandler(jakarta.persistence.EntityNotFoundException.class) public org.springframework.http.ResponseEntity<RespuestaErrorDTO> manejarRecursoNoEncontrado(jakarta.persistence.EntityNotFoundException ex, jakarta.servlet.http.HttpServletRequest request)
      Maneja las excepciones producidas cuando no se encuentra un recurso solicitado en la base de datos.

      Captura las excepciones de tipo EntityNotFoundException, registrando una advertencia en los logs y retornando una respuesta HttpStatus.NOT_FOUND (404). Esto ocurre típicamente al intentar acceder, actualizar o eliminar un registro mediante un identificador inexistente.

      Parameters:
      ex - La excepción de entidad no encontrada.
      request - La solicitud HTTP donde se intentó acceder al recurso inexistente.
      Returns:
      Una respuesta estructurada indicando que el recurso no está disponible.
    • manejarConcurrencia

      @ExceptionHandler(org.springframework.orm.ObjectOptimisticLockingFailureException.class) public org.springframework.http.ResponseEntity<RespuestaErrorDTO> manejarConcurrencia(org.springframework.orm.ObjectOptimisticLockingFailureException ex, jakarta.servlet.http.HttpServletRequest request)
      Maneja las excepciones de concurrencia producidas cuando dos usuarios intentan modificar el mismo registro simultáneamente.

      Captura las excepciones de tipo ObjectOptimisticLockingFailureException lanzadas por el mecanismo de control de concurrencia optimista de JPA (anotación @Version). Retorna una respuesta HttpStatus.CONFLICT (409) informando al cliente que debe recargar los datos antes de reintentar la operación, evitando así la corrupción de datos por "actualizaciones perdidas".

      Parameters:
      ex - La excepción de fallo de bloqueo optimista lanzada por Hibernate/JPA.
      request - La solicitud HTTP en la que se produjo la colisión de datos.
      Returns:
      Una respuesta estructurada indicando el conflicto de concurrencia (409 Conflict).