我有这样一个Java中的工厂方法:
public static Properties getConfigFactory() throws ClassNotFoundException, IOException {
if (config == null) {
InputStream in = Class.forName(PACKAGE_NAME).getResourceAsStream(CONFIG_PROP);
config = new Properties();
config.load(in);
}
return config;
}
我想将这两个被检查的异常转换为未经检查的异常。最好的方法是什么?
我应该捕获异常并使用已捕获的异常作为内部异常抛出新的RuntimeException吗?
还有更好的方法吗?或者我是否应该首先尝试这样做?
编辑:
只是为了澄清。这些异常将是致命的,因为配置文件对程序的操作非常重要,并且所有异常都将在我的程序顶层被捕获和记录。
我的目的是避免不必要的throws异常,它会添加到调用我的工厂的每个方法的签名中。
callUnchecked(() -> getConfigFactory())
的东西,并定义callUnchecked
类似于try { return supplier.get(); } catch (Throwable ex) { throw new RuntimeException(ex); }
。这样,你在调用者代码中明确声明调用可能会失败并导致崩溃,但不会使代码过于臃肿。显然,这仅适用于 Java 8,因为涉及到 lambda。 - Qw3ry