Выход из статического блока инициализации в Java - PullRequest
5 голосов
/ 12 июля 2011

У меня есть статический блок инициализации.Настраивает ведение журнала в файл.Если что-то пойдет не так, я просто хочу вырваться из статического блока.Это возможно?Я знаю, что мог бы использовать подход if / else, но использование простого разрыва сделало бы код более читабельным.

Ответы [ 6 ]

5 голосов
/ 12 июля 2011

Ваш статический блок может вызывать метод

static { init(); }

private static void init() {
     // do something
     if(test) return;
     // do something
}
3 голосов
/ 12 июля 2011

Вы, вероятно, хотите перехватить все исключения:

static {
    try {
        // Initialization
    }
    catch (Exception exception) {
        // Not much can be done here
    }
}

Но будьте осторожны: загрузка класса не приведет к ошибке, но некоторые или все статические поля могут быть в несовместимом состоянии.

2 голосов
/ 12 июля 2011

Это то, что вы ищете?

label:
{
  // blah blah
  break label;
}
0 голосов
/ 12 июля 2011

По моему мнению, статический блок ничем не отличается от любого другого блока с точки зрения стратегий управления потоком данных.Вы можете использовать BREAK везде, где считаете его более читабельным (в том числе и в статическом блоке), но общее предположение состоит в том, что он делает код менее читаемым на самом деле и что подход IF ELSE лучше.

0 голосов
/ 12 июля 2011
  • если это исключение, используйте try {throw new Exception ();} catch
  • если это обычная обработка, используйте if-then-else или switch
    в конце концов вы можете использовать метки, но ИМХО это очень плохой стиль:

    //boolean condition;
    static {
     label:
     {
      System.out.println("1");
      if(condition) break label;
      System.out.println("2");
     }
    }
    
0 голосов
/ 12 июля 2011

Как насчет попробовать / поймать?

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