【回炉重造】—— 异常
目录
异常的引入
异常的分类
五个关键字
try
catch
finally
throw
throws
throw 和throws的区别
处理异常的方式
自定义异常
异常的引入
Exception:异常,就是在程序的运行过程中,发生了不正常的现象,阻止了程序的运行,我们称之为出现异常。
平时有些可能发生异常的地方可以用if-else避免,但是使用if-else堵漏洞有很多缺点:代码臃肿,业务代码和处理异常的代码混在一起,可读性差,很难堵住所有的漏洞。这样就引入了异常。try-catch体,业务代码放在try里面正常写,抛出异常和处理异常的地方交给catch。这样就区分了正常业务代码和处理异常的代码。
异常的分类
按照异常出现的时机,分为运行时异常和检查异常,运行时异常是
五个关键字
认识了异常的分类,异常里面还有五个关键字
try
catch
try-catch就是捕获异常的格式
把可能出现异常的代码放入try代码块中,然后将异常封装为对象,被catch后面的()中的那个异常对象接收,接收以后,执行catch后面()里面的代码,然后try-catch后面的代码,该怎么执行就怎么执行。
详细说一下:
(1)try中没有异常,catch中代码不执行
(2)try中有异常,catch进行捕获:
如果catch中异常类型和抛出的异常类型匹配的话,走catch中的代码,进行捕获
如果catch中异常类型和你出的异常类型不匹配的话,不走catch中的代码,没有捕获成功,程序相当于遇到异常了,中断了,后续代码不执行
注意:
(1)try中如果出现异常,然后用catch捕获成功的话,那么try中后续的代码是不会执行的
(2)如果catch捕获异常成功,那么try-catch后面的代码该执行还是执行没有影响。
finally
在使用try-catch,如何让它后面的代码必须执行呢?finally派上用场,主要将必须执行的代码放入finally中,那么这个代码无论如何一定会执行。
那么return和finally谁先执行谁后执行呢?答案是先执行finally最后执行return。
所以一般像关闭数据库连接,关闭IO流资源,关闭socket资源等会放在finally中。
throw
与try-catch组队使用,在catch内部负责抛出异常
throws
在方法体上负责向上抛出异常
throw 和throws的区别
从位置、内容和作用throw 和throws主要有以前区别:
(1)位置不同:
throw:方法内部
throws:方法的签名处,方法的声明处
(2)内容不同:
throw+异常对象(检查异常、运行时异常)
throw+异常的类型(可以多个类型,用,拼接)
(3)作用不同:
throw:异常出现的源头,制造异常
throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常,然后调用者对这个异常进行处理:要么自己处理要么再继续向外抛出异常。
处理异常的方式
(1)try-catch嵌套
public static void main(String... args) {
//检查异常try {Class.forName("com.wu.test01.Test").newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}
}
(2)多重catch
public static void main(String... args) {//检查异常try {Class.forName("com.wu.test01.Test").newInstance();} catch (InstantiationException | IllegalAccessException |ClassNotFoundException e) {e.printStackTrace();}
}
(3)方法体向上抛
public static void main(String... args)throws ClassNotFoundException, IllegalAccessException, InstantiationException {//检查异常Class.forName("com.wu.test01.Test").newInstance();
}
自定义异常
jdk给我们提供了非常多的异常类,除了这些,我们还可以自己自定义异常,供我们复杂的业务使用。像是有些框架需要统一异常格式。
继承运行时异常
public class MyException extends RuntimeException {private static final long serialVersionUID = 7640226454691274383L;public MyException() {}public MyException(String msg) {spuer(msg);}
}
也可以继承检查异常
如果继承的是运行时异常,那么在使用的时候无需额外处理
如果继承的是检查异常,那么使用的时候需要try-catch捕获或者throws向上抛
【回炉重造】—— 异常相关推荐
- 《回炉重造 Java 基础》——集合(容器)
整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...
- Vue回炉重造之封装防刷新考试倒计时组件
你好,我是Vam的金豆之路,可以叫我豆哥.2019年年度博客之星.技术领域博客专家.主要领域:前端开发.我的微信是 maomin9761,有什么疑问可以加我哦,自己创建了一个微信技术交流群,可以加我邀 ...
- 机器人学回炉重造(1-2):各种典型机械臂的正运动学建模(标准D-H法)
文章目录 写在前面 三连杆平面机械臂 平行四边形操作臂 闭链结构 例:平行四边形操作臂 球形臂 拟人臂 球腕 斯坦福机械臂 带球形手腕的拟人化机械臂 DLR机械臂 参考文献 写在前面 本文所有机械臂均 ...
- 机器人学回炉重造(5-2):关节空间规划方法——梯形加减速(与抛物线拟合的线性函数)、S型曲线规划
文章目录 写在前面 学习代码都记录在[个人github](https://github.com/xuuyann/RobotLearningCode)上,欢迎关注~ 梯形加减速(与抛物线拟合的线性函数) ...
- 真人电影中的幻想生物迷墙:索尼克为什么被骂到回炉重造?
<大侦探皮卡丘>上映在即,当网友们对着雷佳音配音的皮卡丘大呼好萌好萌时,我们仿佛又来到了大型真香现场--明明在几个月之前,当人们看到毛茸茸的大叔音皮卡丘时还每个细胞都充满了拒绝. 也有一种 ...
- 机器人学回炉重造(2-4):运动学奇异位型分析
文章目录 什么是运动学奇异位型? 例子:平面二连杆机械手的奇异位型 奇异位型解耦 腕部奇异位型 手臂奇异位型 转载:6轴串联关节机器人的奇异点 参考文献 什么是运动学奇异位型? 在初步系统地了解了机器 ...
- Vue回炉重造之封装一个实用的人脸识别组件
你好,我是Vam的金豆之路,可以叫我豆哥.2019年年度博客之星.技术领域博客专家.主要领域:前端开发.我的微信是 maomin9761,有什么疑问可以加我哦,自己创建了一个微信技术交流群,可以加我邀 ...
- 机器人学回炉重造(2-3):基本雅可比矩阵与其他雅可比矩阵
文章目录 基本雅可比矩阵 定义 求法 其他雅可比矩阵 定义 求法 补充:几何雅可比与解析雅可比 基本雅可比矩阵 定义 用笛卡尔坐标描述线速度(linear velocity)和角速度(angular ...
- 回炉重造之数据结构【一】基本概念
回炉重造之数据结构[一]绪论 文章目录 回炉重造之数据结构[一]绪论 数据结构的基本概念 基本概念和术语 数据结构的三要素 算法和算法评价 算法的基本概念 算法效率的度量 数据结构的基本概念 基本概念 ...
- javacript回炉重造之基础细节点
ascript之回炉重造 var n5=2e5 2*10的五次方 0x开头十六进制 0o开头八进制 0b开头二进制 typeof 用于检测数据类型 值类型(基本类型):字符串(String).数字(N ...
最新文章
- Lync日常维护之四:部分管理操作
- jqplot学习笔记
- leetcode 740. 删除并获得点数(dp)
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第23篇]写一个实现蒙哥马利算法的C程序
- 使用MetaMask实现转账交易时附带Input Data数据
- SLB访问日志分析:基于客户端来源和HTTP状态码的实践
- html中写meta会乱码,BeautifulSoup+Unicode,该死的html乱码,尽管在meta标记中指定了字符集...
- TcxLookupComboBox
- git遇到的问题解决方案
- 回调函数 callback
- 辅助进度控制的计算机软件是指,辅助进度控制的计算机软件是指以( )为核心的项目管理软件包。...
- 简单的关机程序(C语言)
- 十、Linux开发板控制LED灯设备
- 奈何心是安定心,命总是流浪命
- v3.exo是什么文件_exo是什么文件?
- 2021年安徽省大数据与人工智能应用竞赛本科组(省赛)
- Orz这个词的复杂意思[z]
- 【主板上各种接口和附属部件科普】
- [医疗信息化][DICOM教程]HL7 V3 Standard-概述-HL7 V3 Standard - A High Level Overview
- 停用计算机网络,如何禁用电脑上网功能