您的位置:首页 > 编程语言 > Java开发

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

2017-09-08 16:54 281 查看
上一篇文章总结了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 异常