169 01 Android 零基础入门 03 Java常用工具类01 Java异常 07 异常链 01 异常链简介

169 01 Android 零基础入门 03 Java常用工具类01 Java异常 07 异常链 01 异常链简介

本文知识点:异常链简介

说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

异常链简介

异常链的概念

mark

异常链代码示例

异常链代码
mark
mark

main方法中调用异常链中的最后一个方法
异常打印的结果显示:只获取到了异常链中最后一个异常方法代码的信息
mark

相当于前面2个方法的异常信息是丢失的
mark
这就是一种由于新抛出异常而导致异常信息丢失的这样一种场景。
针对这个问题场景,该如何解决呢?
是否有办法把前2个方法中的异常信息保留下来呢?

其实是有办法的,在Java的API中,实际上提供了这种异常的保留机制。
mark
在Throwable构造方法里,除了有异常描述信息的参数外,还可以添加一个Throwable类型的参数,借由一个已经产生的异常对象和一段新的描述构造一个新的异常对象。
mark

mark
当然,也可以直接加一个Throwable参数 。直接用旧的,构造新的。
mark

这是我们通过Java的Throwable API中提供的构造方法实现旧对象信息的获取。

除此之外,还有initCause方法——用一个异常信息,初始化一个新的异常。
它的作用,和上面的构造方法非常类似,所以实际使用,用哪种形式也都可以。
mark
mark

这样修改之后,异常链中的所有异常,都可以打印展示出来了。
也就是说,我们已经能够准确地把异常的原因以及它发生的过程记录并且保留下来了。这就是Java中异常链的一种表现形态。

异常链总结

mark

posted @ 2020-10-20 22:14  皿哥的技术人生  阅读(97)  评论(0编辑  收藏  举报