Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法引发选中异常时如何使用Suppliers.memoize_Java_Java 8_Guava - Fatal编程技术网

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()));