| | |
| | | |
| | | import cn.dev33.satoken.exception.NotLoginException; |
| | | import com.fasterxml.jackson.databind.exc.InvalidFormatException; |
| | | import com.tcm.training.admin.app.auth.exception.InviteCodeRequiredException; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.validation.BindException; |
| | |
| | | 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, "参数错误"); |
| | | } |
| | | |
| | | @ExceptionHandler(InviteCodeRequiredException.class) |
| | | public ApiResponse<Void> handleInviteCodeRequired(InviteCodeRequiredException e, HttpServletRequest request) { |
| | | log.warn("第三方授权缺少邀请码 [{} {}]: {}", request.getMethod(), request.getRequestURI(), e.getMessage()); |
| | | return ApiResponse.fail(506, e.getMessage()); |
| | | } |
| | | |
| | | @ExceptionHandler(IllegalArgumentException.class) |
| | | public ApiResponse<Void> handleIllegalArgument(IllegalArgumentException e, HttpServletRequest request) { |
| | | log.warn("业务参数异常 [{} {}]: {}", request.getMethod(), request.getRequestURI(), e.getMessage(), e); |
| | | 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) |
| | |
| | | @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) { |