GlobalExceptionHandler

@RestControllerAdvice
class GlobalExceptionHandler : ResponseEntityExceptionHandler(source)

Handler centralizado de exceções para toda a API.

Responsabilidades:

  • Padronizar respostas de erro no formato RFC 7807 (ProblemDetail)

  • Logar erros com contexto (trace_id, request path, user_id)

  • Reportar erros críticos (500) ao Sentry

  • Mascarar detalhes internos em produção

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
@Nullable
protected var messageSource: MessageSource

Functions

Link copied to clipboard
@ExceptionHandler(value = [AccessDeniedException::class])
fun handleAccessDenied(ex: AccessDeniedException, request: HttpServletRequest): ProblemDetail

Trata exceções de acesso negado (403 Forbidden) Ocorre quando o usuário não tem permissão para acessar um recurso.

Link copied to clipboard
@ExceptionHandler(value = [IllegalArgumentException::class])
fun handleBadRequest(ex: IllegalArgumentException, request: HttpServletRequest): ProblemDetail

Trata argumentos inválidos (400 Bad Request) Ocorre quando parâmetros da requisição são inválidos.

Link copied to clipboard
@ExceptionHandler(value = [HttpRequestMethodNotSupportedException::class, HttpMediaTypeNotSupportedException::class, HttpMediaTypeNotAcceptableException::class, MissingPathVariableException::class, MissingServletRequestParameterException::class, MissingServletRequestPartException::class, ServletRequestBindingException::class, MethodArgumentNotValidException::class, HandlerMethodValidationException::class, NoHandlerFoundException::class, NoResourceFoundException::class, AsyncRequestTimeoutException::class, ErrorResponseException::class, MaxUploadSizeExceededException::class, ConversionNotSupportedException::class, TypeMismatchException::class, HttpMessageNotReadableException::class, HttpMessageNotWritableException::class, MethodValidationException::class, BindException::class])
@Nullable
fun handleException(ex: Exception, request: WebRequest): ResponseEntity<Any>
Link copied to clipboard
@ExceptionHandler(value = [Exception::class])
fun handleGeneral(ex: Exception, request: HttpServletRequest): ProblemDetail

Trata todas as exceções não capturadas (500 Internal Server Error) Este é o handler de último recurso - captura erros inesperados.