diff options
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.java | 49 |
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() : ""; + } + + +} |
