小言_互联网的博客

Java零基础进阶篇之常用类-异常处理

266人阅读  评论(0)

本篇文章讲解的知识点主要围绕异常处理,废话不多说,只分享Java相关的干货!

主要内容

1. 异常的基本概念

2. 异常的分类

3. 异常的捕获和处理

4. 自定义异常

5. 方法覆盖与异常

异常的基本概念

什么是异常,在程序运行过程中出现的错误,称为异常

没有正确输出,抛出了被0 除异常

通过以上示例,我们看到 java 给我们提供了这样一个体系结构,当出现问题的时候,它会告诉我们,并且把错误的详细信息也告诉我们了,这就是异常的体系结构,这样我们的程序更健壮,我们可以把这个信息,再进行处理以下告诉用户。从上面大家还可以看到,java 异常都是类,在异常类中会携带一些信息给我们,我们可以通过这个类把信息取出来

异常的层次结构

异常的分类

异常主要分为:错误、一般性异常(受控异常)、运行期异常(非受控异常)

  1. 错误:如果应用程序出现了 Error,那么将无法恢复,只能重新启动应用程序,最典型的Error 的异常是:OutOfMemoryError

  2. 受控异常:出现了这种异常必须显示的处理,不显示处理java 程序将无法编译通过

  3. 非受控异常:此种异常可以不用显示的处理,例如被0 除异常,java 没有要求我们一定要处理

trycatch finally

异常的捕获和处理需要采用try 和catch 来处理,具体格式如下:

 

try {

 

}catch(OneException e) {

 

}catch(TwoException e) {

 

}finally {

 

}

  1. try 中包含了可能产生异常的代码
  2. try 后面是catch,catch 可以有一个或多个,catch 中是需要捕获的异常
  3. 当try 中的代码出现异常时,出现异常下面的代码不会执行,马上会跳转到相应的catch 语句块中,如果没有异常不会跳转到catch 中
  4. finally 表示,不管是出现异常,还是没有出现异常,finally 里的代码都执行,finally 和catch

可以分开使用,但finally 必须和try 一块使用,如下格式使用finally 也是正确的


   
  1. try {
  2. } finally {
  3. }

【示例代码】

getMessage printStackTrace()

如何取得异常对象的具体信息,常用的方法主要有两种:

  1. 取得异常描述信息:getMessage()

  2. 取得异常的堆栈信息(比较适合于程序调试阶段):printStackTrace();

【代码示例】

【代码示例】

​​​​​​​受控异常

从上面输出可以看到,无法编译,它抛出了一个异常,这个异常叫做“受控异常”

FileNotFoundException,也就是说在调用的时候必须处理文件不能找到处理FileNotFoundException

​​​​​​​finally 关键字

finally 在任何情况下都会执行,通常在finally 里关闭资源

【示例代码】

采用finally 来释放资源

深入finally

【代码示例】

深入finally

深入finally

深入finally

​​​​​​​

finalfinalize finally

​​​​​​​如何声明异常​​​​​​​

方法定义处采用 throws 声明异常,如果声明的异常为受控异常,那么调用方法必须处理此异常

【示例代码】,声明受控异常

【示例代码】,声明非受控异常

​​​​​​​如何手动抛出异常

采用异常来处理参数非法

throws 和throw 的区别?thorws 是声明异常,throw 是抛出异常进一步了解throw

​​​​​​​异常的捕获顺序

异常的捕获顺序应该是:从小到大

如何自定义异常

自定义异常通常继承于 Exception RuntimeException,到底继承那个应该看具体情况来定,关于异常再以后的项目中再继续讨论

【示例代码】,自定义受控异常

【示例代码】,自定义非受控异常

方法覆盖与异常

方法覆盖的条件:

  • 子类方法不能抛出比父类方法更多的异常,但可以抛出父类方法异常的子异常

总结

a) 异常的分类

b) 受控异常和非受控异常的区别

c) 异常的 5 个关键字 trycatchfinallythrowsthrow

d) 异常的捕获顺序,先捕获小的,再捕获大的

e) 方法覆盖和异常的关系

以上就是异常处理的知识点了,配套视频教程👇,正在学习Java的同学们一定要持续关注哦~~

Java零基础进阶视频教程

 

 


转载:https://blog.csdn.net/bjpowernode_com/article/details/113519338
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场