Exception的处理目的都是为了结构化日志打印 详见 结构化异常日志, 如何做好error日志结构化,便于日志监控过滤.
总结: exception让写代码和问题定位更优雅和方便.
那么为什么编程语言要设计异常呢?首先,引入异常之后,我们就可以把错误代码从正常代码中分离出来进行单独处理,这样使代码变得更加整洁;其次,当出现一些特殊情况时,我们还可以抛出一个检查异常,告知调用者让其处理。
背景: 你是否遇到过如下问题.
1. 线上异常日志报警突然增加很多,但是其实都是多打印的error日志,放大了很多倍.
1.1 对外部调用try catch ,打印error,返回null. 上面抛nullPoint又打印. 可能又抓住,又打印. 级联try catch
1.2 级联try catch,异常层层封装,error层层打Java_exception_如何优雅的处理异常_mikyz的博客-CSDN博客_java怎么处理exception印.
2. 打印的日志缺少了关键现场信息! 比如一个下单,获取商品的图片失败,图片url没有打印. 又比如获取一个用户的多个订单,获取某个订单时失败. 订单Id没有打印.
3. 日志分析 grep时 ,tracId对应的行信息较少,无法有效筛选和过滤! 例如下单失败,是因为下游hsfTimeOut 还是 下游系统异常, 还是下游业务异常.
exception,日志打印(warn还是error),filter层日志打印,依赖层日志打印?
如何在一行上定位问题?
如何确保一个异常只打印一行error日志?
附录:
这些附录其实只是说业界现状,但都不是终极方案.
1. Alibaba 代码规范 - 异常 码出高效 中的异常相关
1, 码出高效 ---异常篇_in the way的博客-CSDN博客
2. Java_exception_如何优雅的处理异常 Java_exception_如何优雅的处理异常_mikyz的博客-CSDN博客_java怎么处理exception
3. Java 异常设计最佳实践 Java 异常设计最佳实践_weixin_34160277的博客-CSDN博客
有用的信息
5. Java高级系列——何时使用、如何使用异常(Exceptions) Java高级系列——何时使用、如何使用异常(Exceptions)_RonTech的博客-CSDN博客_exceptions java