孤尽训练营笔记分享-3/31

    今天是参加孤尽训练营的第三天,主要学习内容为 Java异常体系/异常处理/日志规约/错误码规,今天学习收获如下:

        一 Java异常体系

        异常处理流程:

        

 JAVA异常处理机制:

JAVA异常体系:

 

异常抛出与捕获的原则:

 

JDK7资源关闭新姿势之try with resource流程解析:

         

比如 file类的Stream相关的流,都实现了clossable接口 

使用Optional 优雅的防止 NPE:

        

foreach遍历集合的异常:

1.不要在foreach循环 里进行元素的 remove/add操作 

2.foreach循环会自 动跳过遍历空集合 ,如果对于有null 值的集合,碰到 null时需注意NPE

二 日志规约

 建议: 使用日志门面进行 slf4j 进行,一般使用注解@slf4j 和lomback 

logback框架使用:

核心配置对象及属性分析

 配置文件解析:

 Appender节点配置示例:

 

 logback日志框架关键类图分析

异步Appenter配置示例

线程模型分析

 异常错误日志实时通知

 

 三 日志输出规约

 1.日志级别开关判断:对于 trace/debug/info 级别的日志输出,必须进 行日志级别的开关判断

2.异常日志信息要完整:异常日志信息应该包括 以下两类信息: 案发现场信息 异常堆栈信息

3.避免重复打印日志:重复打印日志,浪费磁 盘空间,务必在日志配 置文件中设置 additivity=false

 扩展日志的设计与规约

扩展日志单独存储:应用中的扩展日志(如打点、临时 监控、访问日志等)单独存储

错误日志单独存储:业务日志与错误日志分开存储

四 错误码规约

功用:系统与系统 间的沟通;人与人之间 的沟通;人与系统之间 的沟通

规约:

定义时要有字母也要有数字

不要与业务架构或者组织架构挂钩

要分级分类管理

 

不能直接输出给用户作为 提示信息使用

使用者避免随意定义新的错误码

便于不同语言的开发者之间协作

五 异常处理与日志综合实践 

1、在Controller层统一捕获异常

2、全局异常处理组件GlobalExceptionHandler 的定义和使用

 

3、API层异常设计实践

 4、Service层异常设计实践

5、DAO数据处理层异常、日志实践

通用 DaoException 使用继承自Runtime Exception的通 用DaoException封装DAO层异常并向 上抛出 

框架层面有选择性的 记录数据操作 在DAO层(框架层面)有选择的记录数据 操作的有效信息,比如:每次操作的原始 SQL 语句及其执行时

 6、使用MDC实现轻量级调用链路追踪

分布式链路追踪 :将一次分布式请求还原成调用链路,将一次分布式请求的调用 情况集中展示,比如各个服务节点上的耗时、请求具体到达哪 台机器上、每个服务节点的请求状态等等

链路跟踪主要功能: • 故障快速定位 • 链路性能可视化 • 链路分析

 7、用有限的异常类处理业务中复杂多变的无限可能

①通用ServiceException 定义继承自RuntimeException的 通用ServiceException业务异常

②结合ErrorCode 结合与业务关联的ErrorCode实 现复杂多变的业务异常需求

8、降低系统的维护难度与过度设计、冗余的手段

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值