【问题标题】:Why can't Java Lambda throw an checked exception [closed]为什么Java Lambda不能抛出检查异常[关闭]
【发布时间】:2020-07-09 06:46:30
【问题描述】:

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

我阅读了这篇文章: Java 8 Lambda function that throws exception? 和这个: java throwing checked exceptions? 但两者都没有帮助我。我也在google上看了多篇文章,但都说不可能,但不是为什么。

【问题讨论】:

  • 您链接到的第一个问题表明lambda 实际上可以抛出已检查异常。你读了吗?

标签: java exception lambda checked-exceptions unchecked-exception


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2010-12-09
    • 2011-01-26
    相关资源
    最近更新 更多