Dubbo自定义异常捕获的问题
https://blog.csdn.net/chentian610/article/details/53691114
当异常类和接口类在同一个jar包下面的时候,会使用自定义的异常类抛出,否则dubbo会自定义封装。
解决方案:
在公共包中设计通用异常类CommonException,在接口包中定义子异常,继承通用异常类
各个接口模块(maven工程为单位)单独定义异常对象继承CommonException,每个模块抛出自己的模块异常(如用户模块抛出UicException),客户端中用CommonException统一捕获处理。
原因:com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke
dubbo处理异常的逻辑依次执行:
1 如果是checked异常,直接抛出
2 方法签名上有声明,直接抛出
3 异常类与接口类在同一个JAR包,直接抛出
4 JDK自带异常,直接抛出
5 dubbo自身异常[RpcException],直接抛出
6 其他包装成RuntimeException抛出