-4

我正在学习 Java,有点困惑,为什么 Lambda 表达式不能抛出检查异常。有人对此有一个可以理解的解释吗?

我通读了这篇文章: 引发异常的 Java 8 Lambda 函数? 还有这个: java抛出检查异常? 但两者都没有帮助我。我也在谷歌上阅读了多篇文章,但他们都说不可能,但不是为什么。

4

1 回答 1

1

这几乎是一种方法。如果方法签名被声明为抛出已检查异常,则可以在 lambda 内部抛出已检查异常。

想象一下,如果可以的话。

Runnable r = ()->{ throw new CheckedException();};

现在可以调用我们想象中的 runnable.run,但调用者不会知道它必须处理已检查的异常。

另一方面,Callable 确实会引发异常。

Callable c = ()->{ throw new CheckedException();};

这很好用,因为 Callable.call 被声明为抛出异常。你不知道异常的具体类型,但你必须处理一个。

于 2020-07-09T06:54:26.903 回答