深入java 自定义异常以及常用
2017-09-08 16:54
281 查看
上一篇文章总结了java的异常用法,常见得java异常以及例子说明。这一篇文章我们继续深入,了解自定义java异常以及常用的异常记录工具。更多的源代码请访问我的github:https://github.com/yangsheng20080808/deepIntoJava
原创不易,转载请声明出处。
本文分为2大部分
为什么没必要自定义编译异常CheckedException
自定义java异常
常用的异常记录工具
举例说明吧:
大家应该看得很清楚,MyException(子)是FileNotFoundException(父)的子类,但是我们在filter = new FileReader(path);的时候,抛出的是MyException的父类FileNotFoundException的对象,大家应该都知道强制向下造型是有风险的,当然,JVM这里当然也不可能让你向下造型去匹配。
我们添加获取的目标:
运行结果:
我们只匹配上了我们的父类对象。而没有匹配上我们的MyException。
我觉得是从程序的健壮性和友好性出发的,我们自定义的异常,可以在程序运行的时候给我们用户更好的异常提示,而且这些异常是符合我们自己定义的场景。
直接举例说明(我觉得真的有用的继承是Exception和RuntimeException:但是一般RuntimeException是程序在运行的时候:要么是系统异常。无法处理。例如网络问题。我们根本没有办法处理。那有什么必要去处理呢?!!!):
最后:我们只有Exception和Throwable是有必要去复写的。
运行结果:
推荐大家几个工具,具体怎么使用,以后再单独写一篇文章总结:
log4j,log4j2
原创不易,转载请声明出处。
本文分为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
相关文章推荐
- 【慕课笔记】第一章 异常与异常处理 第4节 JAVA中的异常抛出以及自定义异常
- 黑马程序员 Java基础 处理异常信息以及自定义异常
- 深入理解java注解(Annotation)以及 自定义注解入门
- java自定义异常类以及全局log打印
- java中异常抛出以及自定义异常
- 详解Java的内置异常以及创建自定义异常子类的方法
- java基础16 捕获、抛出以、自定义异常和 finally 块(以及关键字:throw 、throws)
- java自定义异常以及throws和throw的区别
- java自定义异常以及异常类
- java异常解析以及自定义异常实例
- Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
- Think in Java 笔记_Chapter12_1_Exception基础_异常处理3_自定义异常以及抛出多个异常的处理
- java异常的深入学习以及异常处理时一些内存问题
- java自定义异常以及异常的使用
- 深入理解java注解(Annotation)以及 自定义注解入门
- java8常用的函数,以及lamda表达式有非运行异常能否在外部捕获
- Java 实现自定义异常 以及如何使用该异常
- java常见异常笔试题以及自定义异常
- java异常处理之自定义异常类
- Java中异常机制的深入研究