1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > try catch finally return的执行顺序与返回值探究

try catch finally return的执行顺序与返回值探究

时间:2021-12-19 08:34:13

相关推荐

try catch  finally return的执行顺序与返回值探究

下午看了一下百度文库中下载下来的java笔试题,其中一道就是关于这个问题的,所以写了个测试程序验证了一下,另外具体的理论知识搜罗了网上的资料。

测试程序如下:

package com.andy.code;

public class TestFinally {

public static int gett(){

int t = 1;

try{

System.out.println("before throw");

throw new Exception();

// System.out.println("before return");

//return ++t;

}catch(Exception e){

t++;

return ++t;

}finally{

t+=100;

System.out.println("finaly");

// return t;

}

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(gett());

}

}

异常处理的流程:先执行try块里的代码,如果抛出了异常,则转到相应的catch块里执行,在catchreturn之前执行finally块,反之,如果没有异常,则在try块return之前执行finally语句。

实验出来的结果分两种情况:

1.try 或catch块里含有return语句而finally没有return语句:

这种情况程序执行到try或catch块中的return语句时,将要return的结果计算出来保存等着方法结束时返回,然后接着执行finally里的代码,即使里面有改变了某些变量的值,也不会影响最后的返回值。

2.try 或catch 与finally里同时有return语句,同样在try或catch的return之前保存结果等待返回,接着执行finally代码,但是finally的return语句将会执行,就是说它屏蔽掉了try catch里的return,最后返回的值是finally return的结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。