打破Java中的静态初始化块

时间:2011-07-12 15:50:18

标签: java static

我有一个静态初始化块。它设置记录到文件。如果出现问题,我只想打破静态块。这可能吗?我知道我可以使用if / else方法,但使用简单的中断会使代码更具可读性。

6 个答案:

答案 0 :(得分:5)

您的静态块可以调用方法

static { init(); }

private static void init() {
     // do something
     if(test) return;
     // do something
}

答案 1 :(得分:3)

您可能希望捕获所有异常:

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

但要注意:加载类不会失败,但部分或全部静态字段可能处于不一致状态。

答案 2 :(得分:2)

这是你要找的吗?

label:
{
  // blah blah
  break label;
}

答案 3 :(得分:0)

try / catch怎么样?

try{}catch(){}

答案 4 :(得分:0)

  • 如果是例外,请使用 try {throw new Exception();} catch
  • 如果是正常处理,请使用 if-then-else 开关
    最终你可以使用标签,但恕我直言,这是一个非常糟糕的风格:

    //boolean condition;
    static {
     label:
     {
      System.out.println("1");
      if(condition) break label;
      System.out.println("2");
     }
    }
    

答案 5 :(得分:0)

在我看来,就流量控制策略而言,静态块与任何其他块没有区别。你可以在任何地方使用BREAK,如果你发现它更具可读性(在你的静态块中),但一般的假设是它使代码实际上不易读,并且IF ELSE方法更好。