finally的作用是什么?java异常处理之finally

发布时间:   来源:CSDN  

上节课我们学习了异常的抛出和捕获,这节课我们再来学一个关键字: finally

finally和final是不一样的哦,final是声明常量的,而finally是做异常处理的。

finally语法:


(资料图片仅供参考)

try{

可能包含异常的代码

}catch(异常类 变量名){

异常处理代码

}...(多个catch)

finally{

后置处理代码

}

来看一个小例子:

Demo:

public static void main(String[] args) {    try {        test();    } catch (Exception e) {        e.printStackTrace();    }}public static void test() throws Exception {    try {        throw new Exception("lalalala");    }catch (RuntimeException e){        e.printStackTrace();    }finally {        System.out.println("finally");    }}

输出:

finally

java.lang.Exception: lalalala

at helloworld.exception.FinallyTeach.test(FinallyTeach.java:15)

at helloworld.exception.FinallyTeach.main(FinallyTeach.java:7)

结论:

异常如果没有被捕获,会执行finally的代码

Demo 2:

public static void main(String[] args) {    try {        test2();    } catch (Exception e) {        e.printStackTrace();    }}public static void test2() throws Exception {    try {        throw new RuntimeException("abcd");    }catch (RuntimeException e){        e.printStackTrace();    }finally {        System.out.println("finally");    }}

输出:

finally

java.lang.RuntimeException: abcd

at helloworld.exception.FinallyTeach.test2(FinallyTeach.java:25)

at helloworld.exception.FinallyTeach.main(FinallyTeach.java:7)

结论: 如果异常被捕获,依然会执行finally里的代码

最终结论:

无论异常是否被捕获,finally的代码一定会被执行。finally里适合存放释放资源、后续处理的代码

相关文章Related

返回栏目>>