标题:
标题: 关于实现中断流程并出发错误回调的设计
1、现在框架里面的错误回调一般都是通过response设置错误码,reply回调给用户, 现在我想通过中断程序的方式,直接中断程序,抛出错误回调。 这样写逻辑的时候就不需要把reply传进对应的函数,或者是通过返回值的方式进行reply();
2、现在框架有这个设计,但是默认全部是返回ERR_RpcFail,最后会以错误抛出去,并没有以错误回调返回给用户。
3、请教下,如果想用错误回调的方式,能提供个方法么?
上面注释写了,ERR CODE定义为大于ERR_Exception就不会抛异常了,就需要自己处理错误
egametang 现在框架默认使用的是ErrorCore.ERR_RpcFail,默认是抛异常。 一般rpc调用异常就两种处理情况,1、现有框架的方式,直接捕捉后抛异常.2、我想要的那种方式,捕捉后,返回错误回调给用户。 第二种方式,框架上能否支持下。我就不去修改了 😀
什么叫捕捉后返回错误回调给用户啊
response = await session.call(request);
if (response.Error ==0)
这样不就行了吗?
egametang 本质上回调都是这么写的, 但是这么写对于有些层级比较深的写法不太友好,要么就是把response作为参数传进去, 要么一直返回值到最上层,再赋值给response, 以下是我修改的,不知这么修改有没有问题。请大佬帮忙看下:
你这在消息处理那里catch住异常,然后reply response就行了
这种异常根本不用处理啊,客户端只管一种异常,就是rpcfail。客户端为什么要管你服务端的各种异常。服务端出了异常不用发给客户端,自己修复。不要把异常当成错误使用,异常是出现了不可预计的错误
egametang 这里异常本质就是RpcFail,才新加了个RpcReplyException做特殊异常捕捉。使用RpcReplyException抛出的异常和response.err = 11; reply();return; 做的事情是一样的。相当于:RpcReplyException代替了这一段:
{
response.err = 11; reply(); return ;
}
可以在任何地方都中断程序执行,并返回错误回调。不用局限于在消息处理那里做错误回调处理。
目前的方式照样可以抛异常,只不过你是想把这个异常做成一个error发回给客户端让客户端处理。但是实际上一个异常是不可预计的错误,客户端就无法正确处理这个异常。如果客户端能正确处理这个,那服务端那个地方就肯定应该做成一个错误码往上返回