V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shangzhanyu
V2EX  ›  Java

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

  •  
  •   shangzhanyu · 2020-12-14 15:34:17 +08:00 · 2174 次点击
    这是一个创建于 1476 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看到有些分成 UserException 、SystemException 、UnknownException 三种类型,但是没体会到精髓
    6 条回复    2020-12-14 22:07:59 +08:00
    Braisdom
        1
    Braisdom  
       2020-12-14 15:41:07 +08:00
    推荐你一篇文章,是我之前写的,关于 Java 的异常怎么用: http://www.objsql.com/2020/10/12/interview/
    你可以参考一下
    chendy
        2
    chendy  
       2020-12-14 17:00:03 +08:00
    crud 常用的异常有两种:
    1. 返回错误信息给到接入方的异常
    2. 屏蔽 checked exception 的异常
    liian2019
        3
    liian2019  
       2020-12-14 18:13:09 +08:00
    这些都是根据业务场景划分的异常,其实底层都是运行时异常 RuntimeException,只是包装一下而已,比如会员模块的异常就叫 UserException 如用户不存在,用户状态不正常等待,订单模块就叫 OrderException,程序错误,类似于 sql 异常,空指针啥的和业务无关的就叫系统异常。。。
    liian2019
        4
    liian2019  
       2020-12-14 18:33:58 +08:00
    区分不同的异常在程序里面也可以让代码变得更优雅,比如你一个方法里面调用了很多模块,如果这些模块都是抛的同一个异常,那你 catch 到异常要区分是哪个模块的异常就显得很笨拙。另外在统一异常处理的时候也可以根据不同的异常类型进行不同的处理,等等啦。但也不是划分的越多越好,具体场景具体分析啦。没必要纠结这个,这些基本都是编程范式,有的项目通过定义错误码的形式 10000-20000 是系统异常,20000-30000 是用户异常等等,方法很多。
    opengps
        5
    opengps  
       2020-12-14 19:07:01 +08:00
    最外层套用一层自定义的标准,内部原有异常单独包在一个子节点或者是 key 的集合里
    ZXCDFGTYU
        6
    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 根据你的需求来就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2518 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:33 · PVG 23:33 · LAX 07:33 · JFK 10:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.