try,catch,finally的简单问题

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?... try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 展开
 我来答
知识阅历积累历程

推荐于2016-07-07 · 影视爱好者、游戏达人、IT 男
知识阅历积累历程
采纳数:10965 获赞数:6546

向TA提问 私信TA
展开全部
不管怎样,在try后面的finally是一定会执行的,当然是执行完try后再执行的,但是如果try里面有return的话,它执行的还是try里面的那个return.自己做个示例就明白了,甚至可以加个断点加以调试。
1、如果try里面放了return,如果try里面的语句不报错的话,将返回try里面的内容.
2、如果try里面放了return,如果try里面的语句报错的话,将返回finally里面的内容.
3、如果try里面没有return,那么不管try里面报不报错,都返回finally里面的内容。

public class t1 {
public int test()
{
String str="1s";
//String str="1";
int result=0;
try
{
result=Integer.parseInt(str);
return result;
}
catch(Exception ex)
{
result=2;
//ex.printStackTrace();
}
finally
{
result=3;
}
return result;
}
public static void main(String[] args) {
t1 t=new t1();
System.out.println(t.test());
}
}
szg19891989
2012-08-13 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:85.2万
展开全部
会执行的,finally中的内容是肯定会执行的,执行在运行了try或者catch中的内容之后,即return后
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杨二爷1123
2012-08-13 · TA获得超过842个赞
知道答主
回答量:431
采纳率:0%
帮助的人:114万
展开全部
根据java规范:在try-catch-finally中,如果try-finally或者catch-finally中都有return,则两个return语句都执行并且最终
返回到调用者那里的是finally中return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是
finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
例子:
public class Test {
public static void main(String[] args) {
System.out.println(new Test().test());
}

static int test()
{
int x = 1;
try
{
return x;
}
finally
{
++x;
}
}

}
---------执行结果 ---------
1

public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}

int test()
{
try
{
return func1();
}
finally
{
return func2();
}
}

int func1()
{
System.out.println("func1");
return 1;
}
int func2()
{
System.out.println("func2");
return 2;
}
}
-----------执行结果-----------------

func1
func2
2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桥安荷q9
2012-08-13 · TA获得超过509个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:325万
展开全部
会被执行,在return之前执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式