| | |
| | | public class GlobalExceptionHandler { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); |
| | | private static final String DEFAULT_SERVER_ERROR_MESSAGE = "服务器开小差啦,请稍后重试"; |
| | | |
| | | @ExceptionHandler(NotLoginException.class) |
| | | public ApiResponse<Void> handleNotLogin(NotLoginException e, HttpServletRequest request) { |
| | |
| | | return ApiResponse.fail(400, e.getMessage()); |
| | | } |
| | | |
| | | @ExceptionHandler(IllegalStateException.class) |
| | | public ApiResponse<Void> handleIllegalState(IllegalStateException e, HttpServletRequest request) { |
| | | log.warn("业务状态异常 [{} {}]: {}", request.getMethod(), request.getRequestURI(), e.getMessage(), e); |
| | | return ApiResponse.fail(500, resolveClientMessage(e.getMessage())); |
| | | } |
| | | |
| | | @ExceptionHandler(HttpMessageNotReadableException.class) |
| | | public ApiResponse<Void> handleHttpMessageNotReadable(HttpMessageNotReadableException e, HttpServletRequest request) { |
| | | log.warn("请求体解析失败 [{} {}]", request.getMethod(), request.getRequestURI(), e); |
| | |
| | | @ExceptionHandler(Exception.class) |
| | | public ApiResponse<Void> handleException(Exception e, HttpServletRequest request) { |
| | | log.error("未捕获异常 [{} {}]", request.getMethod(), request.getRequestURI(), e); |
| | | return ApiResponse.fail(500, "服务器内部错误"); |
| | | return ApiResponse.fail(500, DEFAULT_SERVER_ERROR_MESSAGE); |
| | | } |
| | | |
| | | private String resolveClientMessage(String message) { |
| | | if (message == null || message.trim().isEmpty()) { |
| | | return DEFAULT_SERVER_ERROR_MESSAGE; |
| | | } |
| | | return message; |
| | | } |
| | | |
| | | private String resolveReadableMessage(Throwable throwable) { |