异常处理设计与实践
try-catch-finally
try-with-resource
Optional-NPE
级联调用易产生NPE
这就需要我们进行多次判空,如何优雅得解决NPE呢?
使用Optional优雅防止NPE
- 案例
foreach遍历集合异常
在foreach中去add或remove操作集合会出现异常
并发修改异常
- foreach语法糖背后用了iterator
- iterator
ArrayList的iterator实现如下
itr.hasNext 和 itr.next 实现
next方法第一步 checkForComodification(),它做了什么? 如果modCount != expectedModCount就抛出异常ConcurrentModificationException。modCount是什么?外部类ArrayList的元素数量变更次数;expectedModCount是什么?初始化内部类Itr的时候外部类的元素数量变更次数。
所以,如果在foreach中做了add或者remove操作会导致程序异常ConcurrentModificationException
日志
日志的功能
日志时效规约
日志记录规约
- 系统应依赖使用日志框架(SLF4J、JCL)的 API而不是具体日志库中
- 在日志输出时,字符串变量之间的拼接使用占位符的方式
- 日志打印时禁止直接用 JSON 工具将对象转换成 String