简体   繁体   中英

Any easy way to get out of a Java block?

I was just wondering if there is any way to get out of a Java block. It can be any block - if block, for block or even a simple {}. This is because I often come across such situations

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

This multiple levels of indentation clutters up the code I write.

Instead I need some way to do this

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

Based on the value of retCode I will perform any required processing outside the block. Would be nice if it doesn't involve writing that block within a try-catch block, creating a new exception type, throwing it and then catching it.

The correct construct to use is return . This implies that what is a block in your example should really be a method, but that is a good idea anyway - methods that are so long that they contain multiple, complicated control flow alternatives are an antipattern. Do yourself a favor and switch to "one objective per method" today! <end of evangelism>

看看breakcontinue

You seem to use the nested ifs here for error handling.

If you switch to structured exception handling, maybe you could get rid of the deeply nested if constructs at all.

This would, however, imply that performSomeThing() and performSomethingElse() would throw exceptions instead of returning error codes.

<again evangelism>

Don't do that. In my opinion the correct way for a bloc is one start at the beginning, one stop at the end, full stop.

Even with a method, you should have only one return at the end.

Inside the bloc, you write the flow of the running instructions with if and so on, from the start to the end, the more simple you can (so, sometimes, you write return or break etc inside it, ok ; it should be exception).

It's best (but not mandatory) to write normal completion statements .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM