为什么Java Lambda不能抛出一个检查异常



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

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

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

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

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

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

另一方面,Callable确实抛出了一个Exception。

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

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

相关内容

  • 没有找到相关文章

最新更新