黑马程序员技术交流社区
标题:
关于异常处理语句的一个问题
[打印本页]
作者:
paozhuanyinyu
时间:
2014-8-17 19:32
标题:
关于异常处理语句的一个问题
用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
作者:
玥夜
时间:
2014-8-17 20:47
本帖最后由 玥夜 于 2014-8-17 20:49 编辑
这个 try里面一般没有return吧 try是用来包围语句的 处理语句有异常的 不是用来包围方法的 return 是写在方法里面的
作者:
justin1258
时间:
2014-8-17 20:57
应该是先执行try里的return,再执行finally。没有直接证明,但是这里有段代码可以间接证明:
public class Test {
public static void main(String[] args) {
System.out.println(test());
}
@SuppressWarnings("finally")
static int test(){
try {
return 0;
}finally{
return 1;
}
}
}
复制代码
输出的结果是1,而不是0。
从这里可以间接判断先执行了try里的return语句,然后执行finally里的return语句,而且finally里的return覆盖了try里面结果。
作者:
怀念黑海岸
时间:
2014-8-17 23:11
本帖最后由 怀念黑海岸 于 2014-8-17 23:13 编辑
finally,你写下就可以了,在try中抛出一个运行时异常,catch中的处理语句就是return语句,然后finally中定义一条打印语句,按理说产生异常后被catch捕获的话那么要运行处理语句,但是如果finally中的这条语句被执行了就说明finally中的语句是必须被执行的。
作者:
masai158
时间:
2014-8-17 23:16
上次有人问过一样的答案。
我的答题是。 当 try里面发现下一句是 return 的话。则马上跳转到 finally 的代码进行运行。如果当 finally 也有 return 则返回 finally 的 return....如果 当 finally 执行完毕以后。也没有发现 return的话。则会返回跑到 try中,执行 try的 return。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2