java-finally详解
来源:互联网 发布:悟空遥控器有线网络 编辑:程序博客网 时间:2024/05/19 15:20
今晚京东笔试,各种finally,有点迷糊,所以在这里总结一下。
1、如果在try块或者catch块有System.exit(0),直接退出,不执行finally代码块
public class Main {void fun(){int c=0;try{System.out.println("try ");System.exit(0);}catch(Exception Ex){Ex.printStackTrace();}finally{System.out.println("finally");}}public static void main(String[] argc) {Main m = new Main();m.fun();}}输出:
try
2、如果无System.exit(0)(这函数功能太强大,直接结束当前应用程序),而且finally中有return语句,则运行到finally中的return语句时直接返回,相当于try和catch中的return语句无效。
public class Main {int fun(){int c=0;try{System.out.println("try ");return 0;}catch(Exception Ex){Ex.printStackTrace();return 1;}finally{System.out.println("finally");return 2;}}public static void main(String[] argc) {Main m = new Main();System.out.println(m.fun());}}输出:
try
finally
2
这里从JVM的角度,分析一下try语句。
1、在try代码块中执行。如果出现异常而且有相应的catch语句块,则转到相应的catch语句块执行即2;如果出现异常而且没有相应的catch语句块(或者return语句),则保存抛出的的异常(或者返回值),然后转到finally语句块执行即3;
2、在catch代码块中执行。如果出现异常(或者return语句),则保存抛出的的异常(或者返回值),然后转到finally语句块执行即3;
3、在finally代码块执行。如果执行到return语句,则直接返回;如果执行结束,则抛出(或者返回)之前保存的异常(或者返回值);
再加一条:如果异常不是在try语句块和catch语句中出现,则直接抛出。
0 0
- java-finally详解
- java中finally详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- 【转】java try、catch、finally及finally执行顺序详解
- JAVA try、catch、finally的执行详解
- java try...catch...finally机制详解
- java-finally
- Java-finally
- Java finally
- Java Finally
- JAVA中try、catch、finally的使用及finally执行顺序详解
- Java try catch finally 虚拟机执行流程详解
- TQ210——S5PV210串口通信
- Android的MediaPlayer架构介绍
- What are some things you wish you knew when you started programming?
- angularjs示例
- 2.1.3 享元模式
- java-finally详解
- clone github private repository
- 寻找和为定值的多个数
- 工作遇到过英文词汇及例子罗列(持续更新)
- spark-sql master on yarn 模式运行 select count(*) 报错日志
- OpenCV2.4.13+VS2012+win8安装测试
- LintCode-第1题 A+B问题
- 模块封装
- 算法中的优化问题(optimization problem)