字段初始化中未处理的异常

2022-09-01 14:42:05

Java 是否有任何语法用于管理在声明和初始化类的成员变量时可能引发的异常?

public class MyClass
{
  // Doesn't compile because constructor can throw IOException
  private static MyFileWriter x = new MyFileWriter("foo.txt"); 
  ...
}

或者,是否总是必须将此类初始化移动到我们可以声明或包装初始化的方法中,throws IOException


答案 1

使用静态初始化块

public class MyClass
{
  private static MyFileWriter x;

  static {
    try {
      x = new MyFileWriter("foo.txt"); 
    } catch (Exception e) {
      logging_and _stuff_you_might_want_to_terminate_the_app_here_blah();
    } // end try-catch
  } // end static init block
  ...
}

答案 2

最佳做法是将这些类型的初始化移动到可以属性处理异常的方法。