java 异常的分类

java 异常有哪些分类呢?
一:异常体系分类
在这里插入图片描述
对上图进行简要介绍:
最大的异常为Throwable,该异常分为两种类型异常:Error(系统级异常,程序不能处理)、Exception(程序可以处理的异常)
Error:最常见的异常是OOM
Exception:分为受检查的异常和不受检查的异常
① 受检查的异常需要程序处理
②不受检查的异常,可处理也可不处理,例如空指针异常、类型转换异常
二:java中与异常处理相关的5个关键字
try: try{}代码块中放可能产生异常的代码
catch: catch(Exception ex){}代码块中放处理异常的代码
finally:finally{}代码块中放一定会被执行的代码
throw:throw用在代码中手工抛出异常
throws:throws用在方法的声明部分,表示此方法会抛出异常
1: try和catch
try后面跟一个代码块,将可能产生异常的代码放在这个代码块里
catch处理异常的代码,catch后的小括号中必须定义一个异常类型的引用,用来接收try块抛出的异常对象。Try代码块产生异常时,异常信息被封装到某个类型的异常对象中,对象被传递给catch后面小括号中定义的异常类型的引用
程序结构:
在这里插入图片描述
Try,catch的3种情况:

第1种:try块没有产生异常,try块里的代码执行完毕,不会进catch, 接着执行try,catch后面的其它代码
在这里插入图片描述
第2种:try块产生异常,并且产生的异常被正确的捕获到了,直接从产生异常的代码进入catch(产生异常的代码后的其它代码不会执行),catch块里的代码执行完毕后,接着执行try,catch后面的其它代码
在这里插入图片描述
第3种:try块产生异常,并且产生的异常没有被正确的捕获到了,程序执行直接中断,和没有对异常进行处理是一样的
在这里插入图片描述
另外:假如try代码块里的代码可能产生多种异常,此时1个try对应多个catch
执行过程:
在这里插入图片描述
将产生的异常跟第1个catch里的异常类型进行比较,
假如异常类型匹配,进入这个catch代码块,catch代码块执行完毕,忽略其它的catch块,接下去执行try,catch块后的其它代码
假如不匹配,与下一个catch进行比较,直到找到匹配的,则进入匹配的catch块,catch代码块执行完毕,忽略其它的catch块,假如都不匹配,程序中断,相当于没有对异常进行处理

当要捕获的多个异常存在父子关系的时候,子类在前,父类在后,否则会产生不可达的代码,编译报错;假如不存在父子关系,无所谓先后
2: finally
finally代码块
无论前面的try…catch是3种情况下的哪一种,finally里面一定会被执行到
finally代码块中通常写释放资源的代码

程序结构:
try{
//可能产生异常的代码
}catch(Exception ex){
//处理异常的代码
}finally{
//一定会被执行的代码
}
try后面可以只跟catch(可以有多个), 也可以只跟finally(1个),也可以二者都有
3: throw,throws
throw: 用在代码中手工抛出异常
语法:throw new 异常类();
throws: 用在方法的声明部分,告诉调用者此方法会抛出异常
抛异常的方法:
在这里插入图片描述
方法的调用者:
方法的调用者有2个选择:

  1. 处理异常
  2. 将异常继续向外抛出,假如已经是main方法,建议不要再向外抛
    在这里插入图片描述

4:自定义异常
继承Exception或者RuntimeExcepion, 实现空参构造和全参构造
在这里插入图片描述

已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx基础知识,</span><span>解读Nginx核心知识、带领学员进行</span>高并发环境下Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页