一、今日学习
Try...catch...finally...
(1)使用try...catch...finally...语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它,finally无论有无异常都会执行。
(2)形式:
1 try //监视 2 { 3 可能发生异常的代码块; 4 } 5 catch(异常类型 异常对象名) 6 //捕获并处理异常 7 { 8 异常处理代码块; 9 }finally { 10 //最终执行 11 }
(3)实例:
(4)catch语句可以有多个,并且要捕获Exception,则将Exception放在最后,不能放在前面,否则会出错。即:如果要捕获多个异常,异常的范围要按照从小到大顺序叠放。
注:finally可以省略
(5)总结:
-
当抛出一个异常时,异常会由相应的catch语句捕获并处理,与一个try相关的catch语句可以有多个,构成多重catch语句,异常类型决定了要执行哪个catch语句,如果没有抛出异常,try代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。
-
try语句也可以嵌入try语句,一个try代码块可以嵌入到另一个try代码块中,由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码块。
二、遇到问题
使用try...catch...finally时遇到警告:finally block does not complete normally
查找资料分析原因是:如果finally块中包含return语句,会覆盖前面的return语句(try块、catch块中的),即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,不会捕获异常,编译器会报警告。
三、明日学习
Java的剩余三个抛出异常的方法