Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não recebo o tratamento das exceptions feito no body do response do Postman:

Podem por gentileza me ajudar na verificação do código para solucionar esse problema?

Eu identifiquei que o status que eu defino aqui @ResponseStatus(HttpStatus.NOT_FOUND), ele reflete no Postman.

Exemplo @ResponseStatus(HttpStatus.ALREADY_REPORTED): Insira aqui a descrição dessa imagem para ajudar na acessibilidade

No console do IntelliJ também:

2024-01-18T11:42:54.389-03:00  WARN 9680 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [br.com.projeto.exception.NotFoundException: Recurso não encontrado]
package br.com.projeto.exception

import br.com.projeto.dto.ErrorView
import jakarta.servlet.http.HttpServletRequest
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.ResponseStatus
import org.springframework.web.bind.annotation.RestControllerAdvice

@RestControllerAdvice
class ExceptionHandler {

    @ExceptionHandler(NotFoundException::class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    fun handleNotFound(
        exception: NotFoundException,
        request: HttpServletRequest
    ): ErrorView {
        return ErrorView(
            status = HttpStatus.NOT_FOUND.value(),
            error = HttpStatus.NOT_FOUND.name,
            message = exception.message,
            path = request.servletPath
        )
    }

}
package br.com.projeto.exception

import java.lang.RuntimeException

class NotFoundException (message: String?) : RuntimeException(message)

E na Service:

    fun deleteClass(id: Long) {
        list.firstOrNull { it.id == id }?.let { list.remove(it) } ?: throw NotFoundException(ErrorMessage.RESOURCE_NOT_FOUND)
    }

Postman:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade O objeto está sendo criado corretamente:

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

1 resposta
solução!

Resolvi colocando um retorno de ResponseEntity no método do Handler

@ExceptionHandler(NotFoundException::class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    fun handleNotFound(
        exception: NotFoundException,
        request: HttpServletRequest
    ): ResponseEntity<ErrorView> {
        val error = ErrorView(
            status = HttpStatus.NOT_FOUND.value(),
            error = HttpStatus.NOT_FOUND.name,
            message = exception.message,
            path = request.servletPath
        )
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error)
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software