Skip to the content.

Home / cs-notes / Books / Java / 阿里Java开发手册 / v2022.02.03 / Note / 注意 / 02. 异常日志

异常日志

错误码

  1. 指定原则:
    • 快速溯源
    • 沟通标准化

异常处理

  1. 事务抛异常时, 需要手动回滚事务

  2. try-with-resources

  3. finally 中不使用 return 语句

  4. 非一方代码的异常捕获, 使用 Throwable

  5. 方法注释 - 返回值 - 说明是否会返回 null 以及 null 的含义
    • 划清职责 (null 由谁处理) 避免 NPE
  6. 引用类型使用前确保做过 NPE 校验
    • 可以使用 Optional
  7. 避免直接使用 RuntimeException
    • 使用具有具体业务含义的异常, 比如自定义异常
  8. 对外开放接口, 使用 错误码
    • 应用内部使用异常
    • 应用间 RPC 使用 Result 方式:
      • isSuccess 方法
      • errorCode
      • errorMessage

日志规约

  1. 网络安全相关信息, 保存6个月, 多机备份, 事关法律

  2. trace / debug / info 日志一律先执行 enabled 判断

  3. 子 logger 设置 additivity = false, 避免重复输出
    • 所有 logger 都是 root logger 的 子 logger
    • additivity = true 时, 将同时输出的当前 logger 的所有 appender 和 父 logger 的所有 appender
  4. 禁止输出到 out 流 及 err 流, 否则可能导致单个文件过大
    • System.out
    • System.err
    • e.printStackTrace()
  5. 异常日志要带上下文信息

  6. 输出日志, 使用 toString() 而非现转 json, 避免出现异常, 影响流程

  7. 不要输出没人看的日志