本篇文章讲解的知识点主要围绕异常处理,废话不多说,只分享Java相关的干货!
主要内容
1. 异常的基本概念
2. 异常的分类
3. 异常的捕获和处理
4. 自定义异常
5. 方法覆盖与异常
异常的基本概念
什么是异常,在程序运行过程中出现的错误,称为异常
没有正确输出,抛出了被0 除异常
通过以上示例,我们看到 java 给我们提供了这样一个体系结构,当出现问题的时候,它会告诉我们,并且把错误的详细信息也告诉我们了,这就是异常的体系结构,这样我们的程序更健壮,我们可以把这个信息,再进行处理以下告诉用户。从上面大家还可以看到,java 异常都是类,在异常类中会携带一些信息给我们,我们可以通过这个类把信息取出来
异常的层次结构
异常的分类
异常主要分为:错误、一般性异常(受控异常)、运行期异常(非受控异常)
-
错误:如果应用程序出现了 Error,那么将无法恢复,只能重新启动应用程序,最典型的Error 的异常是:OutOfMemoryError
-
受控异常:出现了这种异常必须显示的处理,不显示处理java 程序将无法编译通过
- 非受控异常:此种异常可以不用显示的处理,例如被0 除异常,java 没有要求我们一定要处理
try、catch 和 finally
异常的捕获和处理需要采用try 和catch 来处理,具体格式如下:
try {
}catch(OneException e) {
}catch(TwoException e) {
}finally {
}
- try 中包含了可能产生异常的代码
- try 后面是catch,catch 可以有一个或多个,catch 中是需要捕获的异常
- 当try 中的代码出现异常时,出现异常下面的代码不会执行,马上会跳转到相应的catch 语句块中,如果没有异常不会跳转到catch 中
- finally 表示,不管是出现异常,还是没有出现异常,finally 里的代码都执行,finally 和catch
可以分开使用,但finally 必须和try 一块使用,如下格式使用finally 也是正确的
try {}finally {}
【示例代码】
getMessage 和 printStackTrace()
如何取得异常对象的具体信息,常用的方法主要有两种:
-
取得异常描述信息:getMessage()
-
取得异常的堆栈信息(比较适合于程序调试阶段):printStackTrace();
【代码示例】
【代码示例】
受控异常
从上面输出可以看到,无法编译,它抛出了一个异常,这个异常叫做“受控异常”
FileNotFoundException,也就是说在调用的时候必须处理文件不能找到处理FileNotFoundException
finally 关键字
finally 在任何情况下都会执行,通常在finally 里关闭资源
【示例代码】
采用finally 来释放资源
深入finally
【代码示例】
深入finally
深入finally
深入finally
final、finalize 和 finally?
如何声明异常
在方法定义处采用 throws 声明异常,如果声明的异常为受控异常,那么调用方法必须处理此异常
【示例代码】,声明受控异常
【示例代码】,声明非受控异常
如何手动抛出异常
采用异常来处理参数非法
throws 和throw 的区别?thorws 是声明异常,throw 是抛出异常进一步了解throw
异常的捕获顺序
异常的捕获顺序应该是:从小到大
如何自定义异常
自定义异常通常继承于 Exception 或 RuntimeException,到底继承那个应该看具体情况来定,关于异常再以后的项目中再继续讨论
【示例代码】,自定义受控异常
【示例代码】,自定义非受控异常
方法覆盖与异常
方法覆盖的条件:
- 子类方法不能抛出比父类方法更多的异常,但可以抛出父类方法异常的子异常
总结
a) 异常的分类
b) 受控异常和非受控异常的区别
c) 异常的 5 个关键字 try、catch、finally、throws、throw
d) 异常的捕获顺序,先捕获小的,再捕获大的
e) 方法覆盖和异常的关系
以上就是异常处理的知识点了,配套视频教程👇,正在学习Java的同学们一定要持续关注哦~~
Java零基础进阶视频教程