Java中异常相关内容及操作
一、Java异常简介:程序出现的不正常行为或者状态,例如:1/0,读取文件不存在等;异常处理就是让程序返回到安全状态,即使出现异常也能够正常确保程序运行,不会直接导致程序挂掉
二、Java异常类间的关系梳理:
2.1、Throwable类是java语言中所有错误或异常的超类
2.2、Error类:系统内部错误或资源耗尽,日常开发中不属于我们程序员负责
2.3、Exception类:程序有关的异常,需要我们程序员重点关注
2.3.1、Exception下的RuntimeException:运行时异常,程序自身的错误,例如5/0,空指针异常,数组越界等
2.3.2、Exception下的非RuntimeException:非运行时异常,外界相关的错误,例如打开一个不存在的文件,加载一个不存在的类等
三、Java程序异常处理方式:
3.1、捕获异常,自行对异常进行处理
示例代码:
3.2、抛出异常,交给上层调用者处理
示例代码:
3.3、程序异常处理的目的:允许用户及时保存结果,控制程序返回到安全状态
四、自行处理异常的常见结构及结构部分说明:
4.1、try...catch(catch可以有多个)
示例代码:
4.2、try...catch(catch可以有多个)...finally
示例代码:
4.3、try...finally
示例代码:
4.4、注意:try必须有,catch和finally至少要有一个
4.5、异常结构各个部分说明:
4.5.1、try:里面的内容是正常的业务逻辑代码
4.5.2、catch:当try中的代码发生异常时,将执行catch中的代码;若无异常,就不执行catch中的代码
4.5.3、finally:当try或catch执行结束后,必须要执行finally中的内容(如果有finally代码块的时候)
注意点:
1、当try中的代码出现多个异常时,碰到第一个异常就会停止try代码块中的运行,跳到catch中,执行catch中的内容
2、catch模块可以有多个,每个catch模块都有不同的方法参数,当try中发生的异常与某一个catch模块的方法参数相匹配,就执行该catch模块中的代码,如果没有一个匹配,就不执行catch模块,
另外catch模块一旦匹配进入,就不会执行其他catch模块中的代码(即使也有其他相匹配的异常),因为一个异常只能进入一个catch模块
3、catch模块的异常匹配都是从上而下的进行匹配,一般将小的精确的异常写在前面,大的宽泛的异常写在后面
4、try-catch-finally中每个模块里面也可能会发生异常,也可以每个模块内部继续写一个try的完整结构
5、异常处理过的后续代码也能执行,即异常结构之后的代码也可以正常执行
示例代码:
五、catch中的异常参数说明:
5.1、异常参数获取异常信息
示例代码:
5.2、异常参数获取异常类名和异常信息
示例代码:
5.3、异常参数获取异常类名和异常信息,以及异常出现的位置
示例代码:
六、throw和throws的区别:
6.1、throw定义在方法体内部,后面跟的是异常对象名称,只能抛出一个异常对象,表示抛出异常
6.2、throw方式抛出运行时异常,编译时不需要处理;throw方式抛出编译时异常,必须有人要处理,如果不处理,需要继续往上抛,抛给方法调用者
6.3、throws用在方法名后面,跟的是异常类名,可以跟多个异常类名,中间用逗号隔开,表示抛出异常,由方法调用者来处理
示例代码:
七、Java1.7之后可以同时书写多个异常:
示例代码: