一、设计一个优秀的异常处理机制

  • 异常处理的乱象列举
    • 捕获异常后只输出到控制台
      • 后端直接将异常捕获,而且只做了日志打印,用户体验非常差,一旦后台出错,用户没有任何感知,页面无状态
      • 后端只给出前端异常结果,没有给出异常的原因描述
    • 混乱的返回方式
      • 后端书写了大量的异常返回逻辑代码,每人返回的逻辑代码各不相同
  • 如何设计异常处理

    • image.png
    • 面向相关方
      • 后端开发人员职责单一
      • 面向前端人员友好
      • 面向用户友好
      • 面向运维友好
    • 为什么要将系统运行时异常捕获,转换为自定义异常抛出呢
      • 转换成自定义异常就是要求程序员对运行时异常进行一个翻译
    • 开发规范
      • Controller、Service、DAO层拦截异常转换为自定义异常,不允许将异常私自截留,必须对外抛出
      • 统一数据响应代码,使用http状态,自定义不方便记忆,HTTP状态码程序员都知道,但是太多了程序员也记不住,定义几个够使用就可以
      • 自定义异常里面有message属性,对用户友好的语言描述异常的发生情况,并赋值给message
      • 不允许对父类Exception统一catch,要分小类catch,这样能够清楚的将异常,转换为自定义异常传递给前端

        二、自定义异常和相关数据结构

  • 该如何设计数据结构【enmu关键字】

    • ExceptionTypeEnum 枚举异常分类,将异常分类固化下来,防止开发人员思维发散
    • Custom
  • 枚举异常的类型
  • 自定义异常
  • 请求接口统一响应数据结构

    三、通用全局异常处理逻辑

    四、服务端数据校验异常处理逻辑