- 在Dubbo的Service实现中捕获异常,记录异常日志,将异常进行转移为自定义异常抛出,注意自定义异常需是RuntimeException,否则使用Spring事务时,不会出现回滚。
- 在dubbo服务的调用层,捕获自定义异常,记录日志进行处理。
下面内容为转载内容:原文地址http://blog.csdn.net/swpihchj/article/details/8058129
异常处理原则
1. 仅处理当前可处理的异常。
对所有的检查型异常使用异常转译。
所有的自定义异常都是非检查型异常。
异常流程与正常流程进行分离,并尽可能的统一处理。
在非异常处理模块的catch块中尽可能不记日志。
除非是进行资源释放操作,否则catch块不应为空或者出现e.printTrace
finally块中不能出现复杂的操作,且不可以抛出异常,也不可以出现return。
处理异常的一般方式
1. 将throw语句视为异常流程的起点,将Exception对象视作正常流程向异常流程跃迁过程中的数据载体。
建立统一的自定义异常类型,用以包装所有检查型异常。
大多数情况下仅在程序的主干上建立唯一的异常捕获点,并在这个点上对接收到的异常进行处理。
附上自定义异常代码
/**自定义Service异常
* Created by lxliuxuan on 2017/2/10.
*/
public class ServiceException extends RuntimeException {
public ServiceException() {
super("Service层异常");
}
public ServiceException(String msg) {
super("Service层异常:"+msg);
}
public ServiceException(Throwable e) {
super("Service层异常:",e);
}
public ServiceException(String msg, Throwable e) {
super("Service层异常:"+msg,e);
}
}