我只是想知道是否有办法摆脱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块中编写该块,创建一个新的异常类型,抛出它然后捕获它,那就太好了。
答案 0 :(得分:20)
要使用的正确构造是return
。这意味着你的例子中的一个块应该是一个方法,但无论如何这是一个好主意 - 方法很长,它们包含多个复杂的控制流替代方案是反模式。帮自己一个忙,今天就切换到“每个方法一个目标”! <end of evangelism>
答案 1 :(得分:7)
查看break
和continue
答案 2 :(得分:2)
您似乎在此使用嵌套ifs进行错误处理。
如果切换到结构化异常处理,也许你可以完全摆脱深层嵌套的if构造。
但是,这意味着performSomeThing()
和performSomethingElse()
会抛出异常而不是返回错误代码。
答案 3 :(得分:-1)
&lt;再次传福音&gt;
不要那样做。在我看来,一个集团的正确方式是从一开始就开始,一站到底,完全停止。
即使使用某种方法,最后也只能有一次返回。
在集团内部,你用 if 等编写运行指令的流程,从开始到结束,你可以越简单(所以,有时,你写回来或破坏等等,好吧;应该是例外)。
写normal completion statements是最好的(但不是强制性的)。