黑马程序员技术交流社区
标题:
分享try——catch——finally执行顺序
[打印本页]
作者:
王亚亚
时间:
2014-6-3 11:16
标题:
分享try——catch——finally执行顺序
public class TestD {
public static void main(String[] args) {
System.out.println(ex());
}
public static String ex(){
String a = "null";
try{
throw new Exception();
}catch (Exception e){
a = "catch";
return a;
}finally {
a="finally";
return a;
}
}
}
复制代码
首先,主函数调用方法ex();然后执行try语句,抛出一个异常,异常被catch捕获,执行catch中的语句,执行完a = "catch";之后,a 的值变为catch,然后发现下一条语句是return,因此直接执行fianlly语句,然后执行finally语句中的return语句结束方法。所以结果为finally。
public class TestD {
public static void main(String[] args) {
System.out.println(ex());
}
public static String ex(){
String a = "null";
try{
throw new Exception();
}catch (Exception e){
a = "catch";
return a;
}finally {
a="finally";
}
}
}
复制代码
在这段代码中执行顺序是首先,主函数调用方法ex();然后执行try语句,抛出一个异常,异常被catch捕获,执行catch中的语句,执行完a = "catch";之后,a 的值变为catch,然后发现下一条语句是return,直接执行finally语句,然后执行a=“finally”;执行之后执行catch中的return,这里请注意,这里返回的是catch中的a值,也就是返回值是catch,原因是当执行到程序return语句时,发现是返回语句,但是finally必须被执行,所以这里return语句被暂停,执行finally语句,执行完之后,返回暂停的语句,所以这里的a值并没有被改变,只是执行的时间不同。还是catch。
作者:
Lex
时间:
2014-6-3 11:22
说的比较详细了不错;P
作者:
Hi天天向上
时间:
2014-6-3 12:54
恩 好贴 又弄懂了一个问题
作者:
。面具小丑
时间:
2014-6-3 13:12
受教了 一直搞不懂
作者:
tangchuanping
时间:
2014-6-3 17:46
说的不错,学习了
作者:
阿苏勒
时间:
2014-6-3 17:49
受教了,finally中的语句都在return语句前面执行
作者:
dede668
时间:
2014-6-3 21:35
很不错,受教了
作者:
Ice丶wj
时间:
2014-6-3 21:55
很好,很牛逼
作者:
Boiled_Water
时间:
2014-6-3 22:08
受教了,值得学习
作者:
北雁南飞
时间:
2014-6-3 22:16
恩恩 讲解的很透彻,只是我还有一个疑问:finally和return,到底是谁先执行呢?照你这么分析,是finally先执行对吧?
作者:
pk49800
时间:
2014-6-3 22:18
模拟的很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2