异常中的编译时异常
编译时异常
除了RuntimeException 以外其它的异常称为checked exception(检测异常、受检异常) ,必须捕获的异常,进行处理;不捕获程序会报错。
为什么会产生异常?下图数产生异常的缘由
**
Java中常见异常处理:所用到的五大关键字分别是 try catch finally throws throw
**
try :捕获异常的第一步是用try{…}语句块选定捕获异常的范围,将可能出现异常的代码放在try语句块中。
catch (Exceptiontype e):在catch语句块中是对异常对象进行处理的代码。每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。如果明确知道产生的是何种异常,可以用该异常类作为catch的参数;也可以用其父类作为catch的参数。
与其它对象一样,可以访问一个异常对象的成员变量或调用它的方法。
getMessage()方法,用来得到有关异常事件的信息
printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。
finally:不论在try、catch代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是可选的
**注意事项!!!
第一点:try、catch、finally三个语句块均不能单独使用,三者可以组成 try…catch…finally、try…catch、try…finally三种结构,catch语句可以有一个或多个,finally语句最多一个;
第二点:try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面;
多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下;**
一个Catch语句块的时候
多个catch语句块的时候
当try语句有多个异常语句,只会执行先到的异常语句,后面的不执行。只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下;
用图片对比:
getMessage()方法,用来得到有关异常事件的信息
printStackTrace()用来跟踪异常事件发生时执行堆栈的内容。