深入java 自定义异常以及常用

上一篇文章总结了java的异常用法,常见得java异常以及例子说明。这一篇文章我们继续深入,了解自定义java异常以及常用的异常记录工具。更多的源代码请访问我的github:https://github.com/yangsheng20080808/deepIntoJava

原创不易,转载请声明出处。

本文分为2大部分

  • 为什么没必要自定义编译异常CheckedException
  • 自定义java异常
  • 常用的异常记录工具

为什么没必要自定义编译异常CheckedException

当我们开始熟练的开始使用java异常的时候,其实这个时候,我们还可以定义自己的异常,我们最好只定义继承Exception和RuntimeException(待会跟大家说一下为什么也不需要去继承RuntimeException),当然,编译异常你也可以继承,但是你继承了编译异常也没有用呀,因为编译异常,是我们抛出的父类对象,捕捉的时候只会匹配他和他的父类,不会匹配他的子类:
举例说明吧:
这里写图片描述
大家应该看得很清楚,MyException(子)是FileNotFoundException(父)的子类,但是我们在filter = new FileReader(path);的时候,抛出的是MyException的父类FileNotFoundException的对象,大家应该都知道强制向下造型是有风险的,当然,JVM这里当然也不可能让你向下造型去匹配。
我们添加获取的目标:
这里写图片描述
运行结果:
这里写图片描述
我们只匹配上了我们的父类对象。而没有匹配上我们的MyException。

自定义java异常

为什么要自定义java异常
我觉得是从程序的健壮性和友好性出发的,我们自定义的异常,可以在程序运行的时候给我们用户更好的异常提示,而且这些异常是符合我们自己定义的场景。
直接举例说明(我觉得真的有用的继承是Exception和RuntimeException:但是一般RuntimeException是程序在运行的时候:要么是系统异常。无法处理。例如网络问题。我们根本没有办法处理。那有什么必要去处理呢?!!!):
最后:我们只有Exception和Throwable是有必要去复写的。
这里写图片描述
运行结果:
这里写图片描述

常用的日志记录工具

我们可以使用一些第三方的日志工具去记录程序中出现的异常:
推荐大家几个工具,具体怎么使用,以后再单独写一篇文章总结:
log4j,log4j2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章