Java中 业务层是返回一个约定好错误码还是抛出自定义异常或者一个自定义result?

个人认为不好,因为这样的话你就很难分辨代表“错误”的异常,和你预期出现的“正常”异常。而如果你要判断这个,那就需要同样复杂的逻辑。那就还不如设计正常返回的数据结构。
而且,万一出现了一个你没想到的exception而你却在一个不应该的层级给捕获了的话,等你部署后开始debug的时候就会想死的…………

■网友
【Java中 业务层是返回一个约定好错误码还是抛出自定义异常或者一个自定义result?】 统一的Result数据结构会让前端处理错误更统一!
基于这一点,后端应该捕获异常并返回一个对应的自定义Result错误代码和消息。

■网友
自己能控制的玩意不要抛异常你喜欢是写
if(list == null || list.size() \u0026gt; 0){ return list.get(0)}else{ return null}还是喜欢写
try{ return list.get(0)}catch(NullPointerException | IndexOutOfBoundsException e){ return null}喜欢第二种你就改变你的喜欢吧
==================================
try会影响性能,所以能不用异常就不要用异常

■网友
用异常可读性更好,我也倾向于这种方式
■网友
Java中 业务层是返回一个约定好错误码还是抛出自定义异常或者一个自定义result?

这是spring 官方指南,这段是说service 每次都调用用户检查的方法,如果用户不存在,还要操作该数据,会抛出用户不存在异常,鄙人不才,还请指教。
■网友
泻药。
不懂Java,只知道exception是处理异常的,流程控制不应该是选择和循环干的事吗?(半脸懵逼

■网友
就我看到的,基本都是不支持...你说的这个感觉可以用定义一个NullPerson类
■网友
建议业务层使用异常,异常类最好有code和error说明,这样代码写起来爽。
最外层给第三方返回的地方统一catch,将异常类的code和error包装成result展现,也方便记录异常日志。

■网友
使用Exception控制流程,影响程序性能,是码农偷懒的体现


    推荐阅读