|
@@ -0,0 +1,94 @@
|
|
|
|
|
+package com.fs.Exception;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+import com.fs.common.core.domain.R;
|
|
|
|
|
+import com.fs.common.exception.CustomException;
|
|
|
|
|
+import com.fs.common.exception.ServiceException;
|
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
|
|
+import org.springframework.security.access.AccessDeniedException;
|
|
|
|
|
+import org.springframework.validation.BindException;
|
|
|
|
|
+import org.springframework.validation.FieldError;
|
|
|
|
|
+import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
|
|
|
+import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
|
|
|
+import org.springframework.web.bind.annotation.RestControllerAdvice;
|
|
|
|
|
+import org.springframework.web.servlet.NoHandlerFoundException;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 异常处理器
|
|
|
|
|
+ */
|
|
|
|
|
+@RestControllerAdvice
|
|
|
|
|
+public class FSExceptionHandler {
|
|
|
|
|
+ private Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理自定义异常
|
|
|
|
|
+ */
|
|
|
|
|
+ @ExceptionHandler(FSException.class)
|
|
|
|
|
+ public R handleRRException(FSException e){
|
|
|
|
|
+ R r = new R();
|
|
|
|
|
+ r.put("code", e.getCode());
|
|
|
|
|
+ r.put("msg", e.getMessage());
|
|
|
|
|
+
|
|
|
|
|
+ return r;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理自定义异常
|
|
|
|
|
+ */
|
|
|
|
|
+ @ExceptionHandler(ServiceException.class)
|
|
|
|
|
+ public R handleRRException(ServiceException e){
|
|
|
|
|
+ R r = new R();
|
|
|
|
|
+ r.put("code", e.getCode());
|
|
|
|
|
+ r.put("msg", e.getMessage());
|
|
|
|
|
+
|
|
|
|
|
+ return r;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @ExceptionHandler(NoHandlerFoundException.class)
|
|
|
|
|
+ public R handlerNoFoundException(Exception e) {
|
|
|
|
|
+ logger.error(e.getMessage(), e);
|
|
|
|
|
+ return R.error(404, "路径不存在,请检查路径是否正确");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @ExceptionHandler(DuplicateKeyException.class)
|
|
|
|
|
+ public R handleDuplicateKeyException(DuplicateKeyException e){
|
|
|
|
|
+ logger.error(e.getMessage(), e);
|
|
|
|
|
+ return R.error("数据库中已存在该记录");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @ExceptionHandler(Exception.class)
|
|
|
|
|
+ public R handleException(Exception e){
|
|
|
|
|
+ logger.error(e.getMessage(), e);
|
|
|
|
|
+ return R.error();
|
|
|
|
|
+ }
|
|
|
|
|
+ @ExceptionHandler(AccessDeniedException.class)
|
|
|
|
|
+ public R handleAccessDeniedException(AccessDeniedException e){
|
|
|
|
|
+ logger.error(e.getMessage(), e);
|
|
|
|
|
+ return R.error("没有权限");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @ExceptionHandler(BindException.class)
|
|
|
|
|
+ public R bindExceptionHandler(BindException e) {
|
|
|
|
|
+ FieldError error = e.getFieldError();
|
|
|
|
|
+ String message = String.format("%s", error.getDefaultMessage());
|
|
|
|
|
+ return R.error(message);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @ExceptionHandler(MethodArgumentNotValidException.class)
|
|
|
|
|
+ public R exceptionHandler(MethodArgumentNotValidException e) {
|
|
|
|
|
+ FieldError error = e.getBindingResult().getFieldError();
|
|
|
|
|
+ String message = String.format("%s", error.getDefaultMessage());
|
|
|
|
|
+ return R.error(message);
|
|
|
|
|
+ }
|
|
|
|
|
+ @ExceptionHandler(CustomException.class)
|
|
|
|
|
+ public R handleException(CustomException e){
|
|
|
|
|
+
|
|
|
|
|
+ return R.error(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+}
|