gpt4 book ai didi

java - 如何在 lambda Java8 中抛出已检查异常?

转载 作者:行者123 更新时间:2023-12-02 01:58:19 24 4
gpt4 key购买 nike

我试图在 lambda 内部抛出异常,但它一直给我一个错误,指出 Unhandled IOException。

 private  <T> T getResponse(final RestURI query, final Class<T> responseClass) throws IOException {
return getValue(query,
reader -> {
try {
return mapper.readValue(reader, responseClass);
} catch (IOException e) {
throw new IOException("Exception while deserializing the output " + e.getMessage());
}
});
}

有人可以告诉我我做错了什么吗?

最佳答案

您在 getValue() 中使用的函数接口(interface)未在此签名中指定 IOException 检查异常。
所以你不能抛出它,因为只有声明的检查异常可能会在 lambda 体内抛出。
创建并使用您自己的声明 IOException 的函数接口(interface),或者从 lambda 抛出任何 RuntimeException 实例,这是有效的。
例如 MC Empire 建议的 UncheckedIOException

此外,您应该通过将新异常链接到原因异常来抛出新异常,以将信息保留在 stracktrace 中:

try {
return mapper.readValue(reader, responseClass);
} catch (IOException e) {
throw new UncheckedIOException("Exception while deserializing the output ", e);
}

关于java - 如何在 lambda Java8 中抛出已检查异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010956/

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