gpt4 book ai didi

java - 如何从外部 block 开始在 lambda block 中重新抛出异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:41 25 4
gpt4 key购买 nike

使用以下代码,

void key(Key) throws SomeCheckedException {
}

void supplier(Supplier<Key> s) throws SomeCheckedException {
ofNullable(s).ifPresent(s -> { // |
try { // |
key(s.get()); // |
} catch (final SomeCheckedException sce) { // |
// sce is coming from key() method // |
// How can I throw sce for outer method? // --/
}
});
}

我如何抛出 sce 就像 method(supplier) 方法抛出它一样?

请注意上面的代码只是一个例子。我需要 key(s.get()) 位于 lambda 表达式中。

void supplier(Supplier<Key> s) throws SomeCheckException {
key(s.get());
}

最佳答案

你不能。 Supplier#get()不声明抛出任何(已检查的)异常。请记住,lambda 表达式只是创建一个实例,它实际上并不调用目标功能接口(interface)方法。

如果您愿意,可以将已检查的异常包装在未检查的异常中并抛出。

关于java - 如何从外部 block 开始在 lambda block 中重新抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27896035/

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