guide-rpc-framework
guide-rpc-framework copied to clipboard
try住了异常为何还要throw出去?
https://github.com/Snailclimb/guide-rpc-framework/blob/311019140e41968f01c122fc170ee0df187df42f/rpc-framework-simple/src/main/java/github/javaguide/registry/zk/util/CuratorUtils.java#L58
把异常统一封装成自定义异常RpcException,同时将真正的异常作为参数。比如redis客户端,操作的时候可能出现网络超时,这种超时统一封装为redis自定义异常。 切记不可滥用。
https://github.com/Snailclimb/guide-rpc-framework/blob/311019140e41968f01c122fc170ee0df187df42f/rpc-framework-simple/src/main/java/github/javaguide/registry/zk/util/CuratorUtils.java#L58
之前这里有一点参考 dubbo 的做法。其实,我觉得直接将异常通过log.error
打印出来就好。
这种写法没问题的, 很多框架都这么用.但是最好的方式肯定是日志框架.
捕获的目的就是打印, 要么日志框架打印,要么system.
抛出一个new 异常 也是打印,printStackTrace().
有时候不方便引入日志框架,又不想直接system.
比如一个方法未实现逻辑,就可以直接抛出new 异常,当执行一个逻辑发生错误,也可以抛出new异常.
捕获异常后,直接抛出new异常,最终还是通过system打印的(会阻塞一下,毕竟是同步打印的,所以才会有日志框架代替,因为日志框架都支持异步).
如果不能忍受抛new异常的阻塞,那就用日志框架代替.