如何无条件退出/返回void方法?

时间:2014-01-18 12:46:02

标签: java return

void A() {
  B();

  // return; <- compiler error "unreachable code"

  if (true) return; // <- this works

  // code that I will test later
  ...
  C(); 
  D();
}

这就是我现在所做的。是否有一个简单的“exit;”或“return;”,在不使用"unreachable code"的情况下不会产生if错误?


只是说清楚:if (true) return; 工作(警告“死码”,我不在乎也可以压制)!
如果我只是使用return; ,我会收到"unreachable code"错误。

注意:如果提供参考,一个简单的“如果不使用if就无法完成”也是一个可以接受的答案。

4 个答案:

答案 0 :(得分:5)

不,Java不支持在代码块中间无条件返回,因为它在一般方案中没有“有意义”。 (Java编译器有充分的理由,必须进行相当强大的控制流分析,如果编译器允许,JVM验证程序仍会拒绝它。)

答案 1 :(得分:4)

问题在于:

if (true) return;

总是会调用return,因此后面的代码无法访问。如果您使用真实条件,则不会出现此警告。

但是,如果您只是想测试部分方法,我建议您只评论将在稍后测试的方法的其余部分。

答案 2 :(得分:1)

为什么不评论其余代码?

void A() {
  B();

  /* code that I will test later
  C(); 
  D();
  */
}

答案 3 :(得分:0)

  

if(true)return;

此语句产生无法访问的代码错误,因为编译器知道此if块将被执行肯定(因为您已放置true条件)。您的if块包含return语句,这意味着在下面的语句中,将不会执行。因此,您会收到"unreachable code"错误。