什么简单的方法来摆脱Java块?

时间:2010-07-01 10:23:36

标签: java

我只是想知道是否有办法摆脱Java阻止。它可以是任何块 - 如果是块,则是块,甚至是简单的{}。 这是因为我经常遇到这种情况

{
  retCode = performSomeThing();
  if(retCode == SUCCESS)
  {
    retCode = performSomethingElse();
    if(retCode == SUCCESS)
    {
         . . . 
          . . . 
    }
   }
}

这种多级缩进会使我编写的代码变得混乱。

相反,我需要一些方法来做到这一点

if((retCode = performSomething()) != SUCCESS)
  GET_OUT_OF_BLOCK
if((retCode = performSomethingElse()) != SUCCESS)
  GET_OUT_OF_BLOCK

根据retCode的值,我将在块外执行任何所需的处理。 如果它不涉及在try-catch块中编写该块,创建一个新的异常类型,抛出它然后捕获它,那就太好了。

4 个答案:

答案 0 :(得分:20)

要使用的正确构造是return。这意味着你的例子中的一个块应该是一个方法,但无论如何这是一个好主意 - 方法很长,它们包含多个复杂的控制流替代方案是反模式。帮自己一个忙,今天就切换到“每个方法一个目标”! <end of evangelism>

答案 1 :(得分:7)

查看breakcontinue

答案 2 :(得分:2)

您似乎在此使用嵌套ifs进行错误处理。

如果切换到结构化异常处理,也许你可以完全摆脱深层嵌套的if构造。

但是,这意味着performSomeThing()performSomethingElse()会抛出异常而不是返回错误代码。

答案 3 :(得分:-1)

&lt;再次传福音&gt;

不要那样做。在我看来,一个集团的正确方式是从一开始就开始,一站到底,完全停止。

即使使用某种方法,最后也只能有一次返回。

在集团内部,你用 if 等编写运行指令的流程,从开始到结束,你可以越简单(所以,有时,你写回来或破坏等等,好吧;应该是例外)。

normal completion statements是最好的(但不是强制性的)。