Есть ли простой способ выбраться из блока Java? - PullRequest
7 голосов
/ 01 июля 2010

Мне просто интересно, есть ли какой-нибудь способ выбраться из блока 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 ]

20 голосов
/ 01 июля 2010

Правильная конструкция для использования - return.Это подразумевает, что то, что является блоком в вашем примере, действительно должно быть методом, но в любом случае это хорошая идея - методы, которые настолько длинные, что содержат несколько сложных альтернативных потоков управления, являются антипаттерном.Сделайте себе одолжение и переключитесь на «одну цель на метод» сегодня!<end of evangelism>

7 голосов
/ 01 июля 2010

взгляните на break и continue

2 голосов
/ 01 июля 2010

Кажется, вы используете здесь вложенные if для обработки ошибок.

Если вы переключитесь на структурированную обработку исключений, возможно, вы вообще сможете избавиться от глубоко вложенных if-конструкций.

Thisбудет, однако, означать, что performSomeThing() и performSomethingElse() будут выдавать исключения вместо возврата кодов ошибок.

0 голосов
/ 01 июля 2010

<снова евангелизация>

Не делай этого. На мой взгляд, правильный путь для блока - один старт в начале, один останов в конце, полный останов.

Даже с методом у вас должен быть только один возврат в конце.

Внутри блока вы записываете последовательность выполнения инструкций с помощью , если и так далее, от начала до конца, тем проще вы можете (поэтому иногда вы пишете return или break и т. Д.). внутри, хорошо, это должно быть исключение).

Лучше (но не обязательно) писать нормальные операторы завершения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...