Browse Source

工具类修改

xujunwei 3 years atrás
parent
commit
2f4941c859

+ 2 - 3
framework-boot/src/main/java/com/mrxu/framework/boot/feign/FeignProviderException.java

@@ -13,7 +13,7 @@ import java.io.Serializable;
  * @Description: rpc 服务端异常
  */
 @Data
-public class FeignProviderException extends RuntimeException implements Serializable {
+public class FeignProviderException implements Serializable {
 
     // 是否是业务异常
     private boolean isBusinessException;
@@ -30,8 +30,7 @@ public class FeignProviderException extends RuntimeException implements Serializ
 
     public FeignProviderException(){}
 
-    public FeignProviderException(boolean isBusinessException,String serviceName, BaseCode baseCode, Throwable cause) {
-        super(cause);
+    public FeignProviderException(boolean isBusinessException,String serviceName, BaseCode baseCode) {
         this.isBusinessException = isBusinessException;
         this.serviceName = serviceName;
         this.fromServiceName = RpcRequestInfo.getFromServiceName();

+ 8 - 2
framework-boot/src/main/java/com/mrxu/framework/boot/handle/FeignErrorDecoder.java

@@ -35,9 +35,15 @@ public class FeignErrorDecoder implements ErrorDecoder {
     public Exception decode(String methodKey, Response response) {
         try {
             String rs = Util.toString(response.body().asReader());
-            FeignProviderException feignProviderException = JSONObject.parseObject(rs, FeignProviderException.class);
+            FeignProviderException feignError = JSONObject.parseObject(rs, FeignProviderException.class);
             log.info("rpc 远程调用返回错误:{}",rs);
-            throw feignProviderException;
+            if(feignError.isBusinessException()) {
+                throw new BusinessException(feignError.getCode(),feignError.getMsg());
+            }
+            else {
+                String msg = feignError.getFromServiceName()+"->"+feignError.getServiceName()+"错误:"+feignError.getMsg();
+                throw new Exception(msg);
+            }
         }
         catch (IOException ignored) {
             log.error("rpc 返回数据异常",ignored);

+ 6 - 9
framework-boot/src/main/java/com/mrxu/framework/boot/handle/FeignProviderExceptionHandler.java

@@ -41,27 +41,24 @@ public class FeignProviderExceptionHandler {
         if(e instanceof BusinessException) {
             BusinessException error = (BusinessException)e;
             log.warn(e.getMessage());
-            return rendError(true,new BaseCode(error.getCode(),error.getMsg()),e);
-        }
-        if(e instanceof FeignProviderException) {
-            return e;
+            return rendError(true,new BaseCode(error.getCode(),error.getMsg()));
         }
         else if(e instanceof MethodArgumentNotValidException) {
             MethodArgumentNotValidException error = (MethodArgumentNotValidException)e;
             BindingResult result = error.getBindingResult();
             log.warn("请求参数错误:{}",result.getFieldError().getDefaultMessage());
-            return rendError(true,BaseCode.ERR_PARAMS_VALID,e);
+            return rendError(true,BaseCode.ERR_PARAMS_VALID);
         }
         else if(e instanceof MissingServletRequestParameterException) {
             log.warn("请求缺少参数:{}",e.getMessage());
-            return rendError(true,BaseCode.ERR_PARAMS_MISS,e);
+            return rendError(true,BaseCode.ERR_PARAMS_MISS);
         }
         log.error("系统错误:{}",e.getMessage(), e);
-        return rendError(false,BaseCode.ERROR,e);
+        return rendError(false,BaseCode.ERROR);
     }
 
-    public Object rendError(boolean isBusinessException,BaseCode code, Throwable cause) {
-        FeignProviderException exception = new FeignProviderException(isBusinessException,serviceName,code,cause);
+    public Object rendError(boolean isBusinessException,BaseCode code) {
+        FeignProviderException exception = new FeignProviderException(isBusinessException,serviceName,code);
         return exception;
     }
 

+ 0 - 6
framework-boot/src/main/java/com/mrxu/framework/boot/handle/WebExceptionHandler.java

@@ -1,7 +1,6 @@
 package com.mrxu.framework.boot.handle;
 
 import com.mrxu.framework.boot.entity.ResponseObj;
-import com.mrxu.framework.boot.feign.FeignProviderException;
 import com.mrxu.framework.boot.web.ServletUtils;
 import com.mrxu.framework.common.util.BaseCode;
 import com.mrxu.framework.common.util.BusinessException;
@@ -46,11 +45,6 @@ public class WebExceptionHandler {
             logger.warn(e.getMessage());
             return rendError(new BaseCode(error.getCode(),error.getMsg()));
         }
-        if(e instanceof FeignProviderException) {
-            FeignProviderException error = (FeignProviderException)e;
-            logger.warn(e.getMessage());
-            return rendError(new BaseCode(error.getCode(),error.getMsg()));
-        }
         else if(e instanceof MethodArgumentNotValidException) {
             BindingResult result = ((MethodArgumentNotValidException)e).getBindingResult();
             FieldError error = result.getFieldError();