Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos: RestControllerAdvice

@RestControllerAdvice
public class GestorDerErrores {

@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity getionarError404() {
    return ResponseEntity.notFound().build();
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity getionarError400(MethodArgumentNotValidException ex) {
    var errores = ex.getFieldErrors();
    return ResponseEntity.badRequest().body(errores.stream().map(DatosErrorValidacion::new).toList());
}

public record DatosErrorValidacion(String campo, String mensaje) {
    public DatosErrorValidacion(FieldError error){
        this(error.getField(), error.getDefaultMessage());
    }
}

}

Agrege en application.properties para evitar que el stacktracer de la excepción sea devuelto en el cuerpo de la respuesta:

server.error.include-stacktrace=never

1 respuesta

Hola Yolima,

¡Espero que estés disfrutando del curso! Veo que estás trabajando en la implementación de una clase para manejar excepciones usando @RestControllerAdvice. Tu implementación parece estar bien encaminada. Aquí tienes algunos puntos a considerar para asegurarte de que todo funcione como esperas:

  1. Revisar los nombres de los métodos: Asegúrate de que los nombres de los métodos reflejen claramente su propósito. Por ejemplo, en lugar de getionarError404, podrías usar gestionarError404 para corregir el error tipográfico.

  2. Verificar la importación de clases: Asegúrate de que todas las clases que estás usando, como EntityNotFoundException, MethodArgumentNotValidException y FieldError, estén correctamente importadas en tu archivo.

  3. Configurar correctamente application.properties: Parece que ya has añadido la configuración para evitar que el stacktrace de la excepción se incluya en la respuesta. Esto es útil para no exponer detalles internos de tu aplicación.

  4. Probar la funcionalidad: Una vez que hayas implementado tu RestControllerAdvice, prueba tu aplicación para asegurarte de que las excepciones se manejan como esperas. Puedes crear casos de prueba específicos que generen las excepciones que estás manejando para verificar que las respuestas sean las correctas.

  5. Personalizar las respuestas: Si deseas personalizar aún más las respuestas de error, puedes añadir más detalles en los métodos de manejo de excepciones, como mensajes personalizados o códigos de error específicos.

Espero que estos consejos te sean útiles. ¡Sigue adelante con confianza!

Espero haber ayudado y buenos estudios!