异常与日志

异常

异常应当描述导致当前异常发生的原因

根据异常栈快速定位到异常发生的位置

结合异常描述异常栈解决异常。

Java异常处理流程

 

Java异常处理机制

Java异常体系

try-catch-finally

try with resource

所有代码都放到catch块中,不好排查异常发生在哪个代码中。

可能抛同一个异常,可以放到同一个catch块中。

Optional优雅防止NPE

级联调用时易产生NPE(空指针异常)

foreach遍历集合的异常

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

(本质是iterator,在期望的被修改次数和实际被修改次数不一致时,抛出异常)

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

日志

日志时效规约

1、当天日志命名:“应用名.log”

2、过往日志命名:“{logname}.log.{保存日期}”,日期格式:yyyy-MM-dd

3、日志文件至少保存15天,便于排查某些以“周”为频次发生的异常

4、敏感操作信息联机存储6个月,是网络安全相关法律的规定

日志记录规约

1、系统应依赖使用日志框架(SLF4J、JCL)的API,而不是具体日志库中的

2、在日志输出时,字符串变量之间的拼接使用占位符的方式

3、日志打印时禁止直接用JSON工具将对象转换为String

4、尽量使用英文描述日志错误信息

日志输出规约

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

2、异常日志信息要完整:异常日志信息应包括案发现场信息和异常堆栈信息。

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

扩展日志规约

1、扩展日志单独存储:如打点、临时监控、访问日志等单独存储。

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

错误码规约

1、定义时要有字母、数字

2、要分级分类管理

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

4、不用与业务架构或组织架构挂钩

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值