异常
异常体系
异常处理
异常做到: 描述原因+定位位置
NPE解决:Optional
核心思想:只关注最终使用的对象和属性
foreach:空集合会跳过,但是集合中如果含有null值,会出现NPE
日志
记录行为:指标监控查询/链路追踪
监控警告:健康检查/指标监控(告警)
定位问题:日志
记录规约:
使用占位符
尽量英文描述
使用API而不是直接使用库
日志打印禁止使用json工具直接转化为String
扩展日志:
错误日志业务日志分开
输出规约:
开关判断:trace/debug/info
日志信息:案发现场+异常堆栈
避免重复:一定设置additivity=false
错误码
异常场景处理
Controller层统一捕获异常
局异常处理组件: GlobalExceptionHandler
API、Service层:
合法性校验
将service/dao等下层错误尽量放在上面
ServiceException+ErrorCode
DAO:
DaoException +记录有效信息(sql及执行时间)
链路追踪 :traceId,parentId,spanId