Java:创建其构造函数可能引发异常的静态类成员

标签 java exception static constructor

我有一个用于设置 MyClass 的所有实例的静态 setter :

public class MyClass {  
        ....
    protected static final Setter setter = new Setter();
        ...
}

然而,由于 setter 构造函数抛出异常,因此无法编译:

public class Setter {

    public Setter() throws FileNotFoundException {
             ....
    }
}

我该如何解决这个问题?

最佳答案

ExceptionInInitializerError正是为此目的而设计的。这是链接的 Javadoc 中的相关引用:

Signals that an unexpected exception has occurred in a static initializer. An ExceptionInInitializerError is thrown to indicate that an exception occurred during evaluation of a static initializer or the initializer for a static variable.

将赋值包装在静态初始化 block 中并进行相应处理。

public class MyClass {  
    protected static final Setter setter;

    static {
        try { 
            setter = new Setter();
        } catch (FileNotFoundException e) {
            throw new ExceptionInInitializerError(e);
        }
    }
}

关于Java:创建其构造函数可能引发异常的静态类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3247055/

相关文章:

c++ - gcc 插件 c c++ 查找全局非静态变量

javascript - 从静态方法调用 ES5 类方法

Java 复制文件,但确保没有其他应用程序写入它

Java Servlet、JAX-RS - 在基于表单的身份验证工作时遇到问题

c - 反对 static int 指针的参数

c++ - 静态成员回收内存并从异常中恢复

java - 使用反射加载类时避免 ClassNotFoundException

java - 从 Realm 中获取通用类型的 Realm 对象

java - REST 中的 @DateTimeFormat 变量给出 null

c# - 如何向用户报告标准异常?