Java 方法引发选中异常时如何使用Suppliers.memoize
我试图在抛出Java 方法引发选中异常时如何使用Suppliers.memoize,java,java-8,guava,Java,Java 8,Guava,我试图在抛出IOException 片段: private Supplier<Map> m_config = Suppliers.memoize(this:toConfiguration); 我希望CTOR将IOException转发给调用者。 建议的解决方案不太干净,有没有更好的方法来处理这种情况?使用 您正在标记,因此应该使用此用例中的UncheckedIOException /** * @throws java.io.UncheckedIOException if an I
IOException
片段:
private Supplier<Map> m_config = Suppliers.memoize(this:toConfiguration);
我希望CTOR将IOException
转发给调用者。
建议的解决方案不太干净,有没有更好的方法来处理这种情况?使用
您正在标记,因此应该使用此用例中的UncheckedIOException
/**
* @throws java.io.UncheckedIOException if an IOException occurred.
*/
Configuration toConfiguration(String fileName) {
try {
// read configuration
} catch (IOException e) {
throw new java.io.UncheckedIOException(e);
}
}
然后,你可以写:
m_config = Suppliers.memoize(() -> toConfiguration(getInputFileName()));
我用的是类似于:IllegalArgumentException@Shvalb如果你使用了
RuntimeException
,那会更好,但是既然UncheckedIOException
存在,那就是你现在应该使用的。
m_config = Suppliers.memoize(() -> toConfiguration(getInputFileName()));