2
respostas

MethodArgumentNotValidException Exception não foi chamado no ControllerAdvice

Olá, pessoal!!

Aprendi sobre tratamento de exception no curso. criei uma classe especifica a configurar o tratamento de exception. mas infelizmente não foi chamado ele no controllerAdvice.

Criei exception na classe do controller advice

Configurei anotação para validar no corpo do JSON

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Coloquei anotação valid no paramentro do post mapping Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Executei no postman mas o resultado não foi customizado que eu criei o tratamento dp exception no controller advice Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Agora foi resolvido a problema, utilizei o código seguinte:

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<List<ErrorMessageDTO>> handle(MethodArgumentNotValidException exception){
        System.out.println("MethodArgumentNotValidException exception is called");
        List<ErrorMessageDTO> dto = new ArrayList<>();
        exception.getBindingResult().getFieldErrors().forEach( e -> {
            String message = messageSource.getMessage(e , LocaleContextHolder.getLocale());
            System.out.println("Error message: "+message);
            ErrorMessageDTO error = new ErrorMessageDTO(e.getField(), message);
            dto.add(error);
        });
        System.out.println("DTO List size: "+dto.size());
        return new ResponseEntity<>(dto, HttpStatus.BAD_REQUEST);
    }

o resultado ficou Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Jeison,

Só um detalhe que percebi no seu código, sua classe ValidateErrorHandler deveria estar anotada com @RestControllerAdvice e não @ControllerAdvice.

Bons estudos!