异常种类那么多, api 接口应该返回哪些异常类型?

2020-12-14 15:34:17 +08:00
 shangzhanyu
看到有些分成 UserException 、SystemException 、UnknownException 三种类型,但是没体会到精髓
2150 次点击
所在节点    Java
6 条回复
Braisdom
2020-12-14 15:41:07 +08:00
推荐你一篇文章,是我之前写的,关于 Java 的异常怎么用: http://www.objsql.com/2020/10/12/interview/
你可以参考一下
chendy
2020-12-14 17:00:03 +08:00
crud 常用的异常有两种:
1. 返回错误信息给到接入方的异常
2. 屏蔽 checked exception 的异常
liian2019
2020-12-14 18:13:09 +08:00
这些都是根据业务场景划分的异常,其实底层都是运行时异常 RuntimeException,只是包装一下而已,比如会员模块的异常就叫 UserException 如用户不存在,用户状态不正常等待,订单模块就叫 OrderException,程序错误,类似于 sql 异常,空指针啥的和业务无关的就叫系统异常。。。
liian2019
2020-12-14 18:33:58 +08:00
区分不同的异常在程序里面也可以让代码变得更优雅,比如你一个方法里面调用了很多模块,如果这些模块都是抛的同一个异常,那你 catch 到异常要区分是哪个模块的异常就显得很笨拙。另外在统一异常处理的时候也可以根据不同的异常类型进行不同的处理,等等啦。但也不是划分的越多越好,具体场景具体分析啦。没必要纠结这个,这些基本都是编程范式,有的项目通过定义错误码的形式 10000-20000 是系统异常,20000-30000 是用户异常等等,方法很多。
opengps
2020-12-14 19:07:01 +08:00
最外层套用一层自定义的标准,内部原有异常单独包在一个子节点或者是 key 的集合里
ZXCDFGTYU
2020-12-14 22:07:59 +08:00
```json
{
"code": 40001,
"msg": "user_error",
"data": {}
}
```

code: 400xx 自定义错误
400 代表发生了错误,参考 http_code 。xx 代表业务错误 code,例如 01 代表用户类型错误这样。msg 里写你错误的提示信息,data 根据你的需求来就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX