summaryrefslogtreecommitdiff
path: root/src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java')
-rw-r--r--src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java b/src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java
new file mode 100644
index 0000000..e096243
--- /dev/null
+++ b/src/main/java/com/mesasoft/cn/web/controller/GlobalExceptionHandler.java
@@ -0,0 +1,49 @@
+package com.mesasoft.cn.web.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.mesasoft.cn.entity.Result;
+import com.mesasoft.cn.entity.ResultEntity;
+import com.mesasoft.cn.enums.StatusEnum;
+import com.mesasoft.cn.exception.BusinessException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.context.request.async.AsyncRequestTimeoutException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+ private static final Log log = LogFactory.get();
+
+
+ @ExceptionHandler(AsyncRequestTimeoutException.class) //捕获特定异常
+ public void handleAsyncRequestTimeoutException(AsyncRequestTimeoutException e, HttpServletRequest request) {
+ log.info("Handle Async Request Timeout Exception");
+ }
+
+
+ @ExceptionHandler(Exception.class)
+ public ResultEntity handleException(Exception e, HttpServletRequest request, HttpServletResponse response) {
+ response.setStatus(StatusEnum.FAIL.getStatus());
+ String message = e.getMessage() + (e.getCause() != null ? e.getCause().getMessage() : "");
+ log.error("message:{}, stackTrace:{}", message, getStackTrace(e));
+ return Result.fail(e.getMessage());
+ }
+
+ @ExceptionHandler({BusinessException.class})
+ public ResultEntity handleBusinessException(BusinessException e, HttpServletRequest request, HttpServletResponse response) {
+ response.setStatus(e.getStatus());
+ String message = (e.getMessage() != null ? e.getMessage() : e.getMessage()) + " " + (e.getCause() != null ? e.getCause().getMessage() : "");
+ log.error("message:{}.stackTrace:{}", message, getStackTrace(e));
+ return Result.fail(e.getStatus(), e.getCode(), message);
+ }
+
+ private String getStackTrace(Exception e) {
+ return ObjectUtil.isNotNull(e.getStackTrace()) ? e.getStackTrace()[0].toString() : "";
+ }
+
+
+}