package com.aida.buyer.common.exception; import com.aida.buyer.common.result.Response; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.BindException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @Slf4j @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(UnauthorizedException.class) public ResponseEntity> handleUnauthorizedException(UnauthorizedException e) { log.error("Unauthorized: {}", e.getMessage()); return new ResponseEntity<>( Response.fail(401, e.getMessage()), HttpStatus.UNAUTHORIZED ); } @ExceptionHandler(BusinessException.class) public Response handleBusinessException(BusinessException e) { return Response.fail(e.getCode(), e.getMsg()); } @ExceptionHandler(MethodArgumentNotValidException.class) public Response handleValidationException(MethodArgumentNotValidException e) { String message = e.getBindingResult().getFieldErrors().stream() .map(error -> error.getField() + ": " + error.getDefaultMessage()) .findFirst() .orElse("validation error"); return Response.fail(-2, message); } @ExceptionHandler(BindException.class) public Response handleBindException(BindException e) { String message = e.getBindingResult().getFieldErrors().stream() .map(error -> error.getField() + ": " + error.getDefaultMessage()) .findFirst() .orElse("bind error"); return Response.fail(-2, message); } @ExceptionHandler(Exception.class) public Response handleException(Exception e) { log.error("system error: ", e); return Response.error("系统繁忙"); } }