gpt4 book ai didi

java - 如何在方法抛出 Checked-Exception 时使用 Suppliers.memoize

转载 作者:搜寻专家 更新时间:2023-11-01 02:00:38 24 4
gpt4 key购买 nike

我正在尝试在抛出 IOException 的函数上使用 Suppliers#memorize

片段:

private Supplier<Map> m_config = Suppliers.memoize(this:toConfiguration);

这给出了一个异常(exception): 未处理的异常类型 IOException

所以我不得不做这样的事情:

public ClassConstructor() throws IOException
{
m_config = Suppliers.memoize(() -> {
try
{
return toConfiguration(getInputFileName()));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
});

if(m_Configuration == null) {
throw new IOException("Failed to handle configuration");
}
}

我希望 CTOR 将 IOException 转发给调用者。建议的解决方案不是那么干净,有没有更好的方法来处理这种情况?

最佳答案

使用UncheckedIOException

您正在标记 ,因此您应该使用针对此用例存在的 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()));

关于java - 如何在方法抛出 Checked-Exception 时使用 Suppliers.memoize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com