-->

业务层中如何返回错误信息

2020-12-14 16:16发布

问题:

向大家请教一个问题,在业务层中出现业务错误,是使用异常还是返回值去报告错误呢?
比如说在业务层中去登录,结果发现用户名或密码错误,那这个时候如何去报错这个错误。

假如是用返回值,那么业务层本身也是需要返回一个正常状态下的数据的,这个时候是用元组(Tuple)或者out参数?out参数在async方法中是不能用的。

回答1:

个人推荐使用异常机制,就算使用返回值包括错误,还是少不了要捕捉异常,不如只捕捉异常好了,只是多一个异常类型而已。再说,从历史的角度看,异常机制的出现就是为了优化用返回值报错的机制的。



回答2:

同意楼上观点,自定义一个业务异常类,可以加上错误码字段,方便准确的记录和跟踪异常。



回答3:

为什么要定义一个异常返回哦,你可以返回一个model,里面至少包括两个节点:
1、status(状态枚举码)
2、errorMessage
3、其他节点
这样在使用这个接口的时候,很容易判断和知道是什么错误,并根据不同的错误编码做响应的逻辑处理



回答4:

建议全局异常,不论你是在代码的任何地方都可使用;如果使用返回值,调用栈过深,还需要一层一层返回



回答5:

你可以这样子的架构你的程序。你在一个配置文件中写上全居的异常处理码 比如
301=用户登录失败,密码不正确
302=用户登录失败,用户名不正确
然后在代码中的业务方法中,自定义异常类,这个你可以定义多个异常类,但是须得有一个父类比如你类中 BusiException
然后你在控制层返回给客户端的时候 加 try(){}catch(BusiException) 然后你从异常中获取到你的异常码 比如301,然后从配置文件中读取对应的内容。这样子就可以完美的响应给客户端了