java 问题 如果前一个return执行了 那么后面的一系列System.out.println 还会执行吗 15

前面的代码不管try{if(count<=0)thrownewResumerException();return2/--count;}catch(ArithemeticE... 前面的代码不管
try { if ( count<=0 )
throw new ResumerException();
return 2/--count ;}
catch (ArithemeticException e){
System.out.println("SOS");}
finally {
System.out.println("spsp") }
System.out.println("ends");
return -1;} }
展开
 我来答
静听_一角
2014-01-15 · TA获得超过109个赞
知道答主
回答量:46
采纳率:0%
帮助的人:43.5万
展开全部
这是一个很经典的面试题,finally会在try里执行完return语句时候继续执行finally里的代码因此会执行输出语句,如果finally里有return语句,注意它会覆盖try里的return语句的值以finally里return值为主,在多说一下吧,为什么会这样,try里的return语句执行完会把值放到一个池中暂时保存起来注意并没有提交,执行finally语句当finally里有return语句时候,会将之前保存在池中的值覆盖掉。还有一个就是当finally里没有return语句而是试图修改try里的return的值是修改不了的,返回的值是以try里的return语句值为主。
巨人战舰
2014-01-15 · TA获得超过186个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:153万
展开全部

我来跟你说吧 这是java运行机制一个很有趣的问题

finally块一定是会执行的,而且一定是在try块的return语句之前执行(但是实质上是先执行return,然后等待finally块执行完毕)


假设在你已经实现相关的异常类的前提下:

就你的问题而言,分三种情况讨论:

  1. count>1:这种情况不会出现除0错,正常执行finally块,然后return 2/--count,输出:

    spsp

    return值 2/--count的值

  2. count=1:这种情况会出现除0错,那么会捕捉到ArithemeticException异常 ,进入catch块,finally块,因为try块已经无法返回了,所以会执行finally下的代码(我实践证明),输出:

    SOS
    spsp
    ends
    return值 -1

  3. count<1:不用说已经先被throw掉了,看你的ResumerException()如何处理了,但是finally块也一定会执行的,输出:

    spsp

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
phoenixco
推荐于2018-04-12
知道答主
回答量:20
采纳率:100%
帮助的人:9.8万
展开全部
return 执行后,后面的语句是不会执行的;
如果是try的话 finally里面的语句是一定执行的;
如果finally 里面写return;后面再写System.out.println()的话,System.out.println()是不会执行的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-15
展开全部
如果是try里的return后面还有System.out.println ,那么是不会执行的。
但是 在try里面,如果有finally,不管如何,都要执行finally里的代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
每天学点Java
2014-01-15 · TA获得超过5938个赞
知道大有可为答主
回答量:3547
采纳率:0%
帮助的人:1338万
展开全部
package org.xyz;

public class TestConstructor {
public static int test() {
int count = 10;
try {
if (count <= 0)
throw new RuntimeException();
return 2 / (--count);
} catch (ArithmeticException e) {
System.out.println("SOS");//如果前一个return执行了 我可以理解为return正常执行返回操作么?如果是,正常执行不会抛出异常,所以不会执行
} finally {
System.out.println("spsp");// 只有这个才会输出
}
System.out.println("ends");// 不会输出
return -1;
}

public static void main(String[] args) {
test();
}

}
// spsp

 


package org.xyz;

public class TestConstructor {
public static int test() {
int count = 1;
try {
if (count <= 0)
throw new RuntimeException();
return 2 / (--count);
} catch (ArithmeticException e) {
System.out.println("SOS");//如果前一个return执行了 我可以理解为return执行返回操作但是可以出现异常?如果是抛出异常执行
} finally {
System.out.println("spsp");// 输出
}
System.out.println("ends");// 输出
return -1;
}

public static void main(String[] args) {
test();
}

}
//SOS
//spsp
//ends
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式