brpc icon indicating copy to clipboard operation
brpc copied to clipboard

baidu-std、http等协议像thrift一样,支持服务端捕获CallMethod内的异常

Open chenBright opened this issue 3 years ago • 1 comments

背景:一些使用到的第三方库甚至标准库,都会有抛异常的情况。目前除了thrift,其他协议都没有捕获服务回调方法抛出的异常。这样使用的时候,只能等服务因抛异常而crash后,经过排查修复后,重新上线才能解决问题,相当于需要一次试错的成本。

期望:很多时候,异常case才会触发抛异常的逻辑,不需要让服务crash。其他协议的处理方式可以和thrift一样(http协议支持持续发送,需要特殊处理),捕获异常,返回错误给上游,并打印异常信息,使用方根据异常信息排查修复问题后,升级服务即可。

chenBright avatar Sep 09 '22 03:09 chenBright

这个选择还是交给用户比较好吧。如果喜欢立刻结束程序,那么回调函数里就不用catch异常,反之,在回调函数里catch所有的异常,并且根据业务给出合理的返回消息

yyweii avatar Sep 16 '22 09:09 yyweii