|
@@ -0,0 +1,74 @@
|
|
|
+package com.huaxu.exception;
|
|
|
+
|
|
|
+import com.huaxu.model.AjaxMessage;
|
|
|
+import com.huaxu.model.ResultStatus;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
|
+import org.springframework.web.bind.annotation.ResponseStatus;
|
|
|
+import org.springframework.web.bind.annotation.RestControllerAdvice;
|
|
|
+import org.springframework.web.method.HandlerMethod;
|
|
|
+import org.springframework.web.servlet.NoHandlerFoundException;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+
|
|
|
+@RestControllerAdvice
|
|
|
+@Slf4j
|
|
|
+public class GloabalExceptionHandle {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 捕捉其他所有异常
|
|
|
+ @ExceptionHandler(Exception.class)
|
|
|
+ public AjaxMessage globalException(HttpServletRequest request, HandlerMethod handlerMethod, Throwable ex) {
|
|
|
+
|
|
|
+ return new AjaxMessage<>(ResultStatus.ERROR_500,ex.getMessage());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否是Ajax请求
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isAjax(HttpServletRequest request) {
|
|
|
+ return (request.getHeader("X-Requested-With") != null &&
|
|
|
+ "XMLHttpRequest".equals(request.getHeader("X-Requested-With").toString()));
|
|
|
+ }
|
|
|
+// @ExceptionHandler(Exception.class)
|
|
|
+// public Result globalException(HttpServletRequest request, Throwable ex) {
|
|
|
+// return new Result(getStatus(request).value(),"访问出错,无法访问: " + ex.getMessage(),null);
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取响应状态码
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private HttpStatus getStatus(HttpServletRequest request) {
|
|
|
+ Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
|
|
|
+ if (statusCode == null) {
|
|
|
+ return HttpStatus.INTERNAL_SERVER_ERROR;
|
|
|
+ }
|
|
|
+ return HttpStatus.valueOf(statusCode);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 捕捉404异常,这个方法只在配置
|
|
|
+ * spring.mvc.throw-exception-if-no-handler-found=true来后起作用
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @ResponseStatus(HttpStatus.NOT_FOUND)
|
|
|
+ @ExceptionHandler(NoHandlerFoundException.class)
|
|
|
+ public AjaxMessage handle(HttpServletRequest request,NoHandlerFoundException e) {
|
|
|
+ System.out.println(12);
|
|
|
+
|
|
|
+ return new AjaxMessage<>(ResultStatus.ERROR_500);
|
|
|
+ }
|
|
|
+}
|