Java 8 orElseThrow:为什么编译器不抱怨该方法没有“抛出”

时间:2018-09-28 06:34:32

标签: java exception

我有以下代码:

public Trail getNewestTrail() {
    return trails.stream().max(Comparator.comparing(Trail::getTimestamp)).orElseThrow(NoSuchElementException::new);

}

在没有将getNewestTrail声明为引发异常的情况下,我看不到任何错误-为什么?

2 个答案:

答案 0 :(得分:8)

NoSuchElementExceptionjava.lang.RuntimeException扩展到uncheched exception

  

Java编程语言不需要捕获或捕获方法   指定未经检查的异常(RuntimeException,Error及其   子类)

您只需要在方法签名中指定检查的异常。

答案 1 :(得分:1)

NoSuchElementExceptionRuntimeException,不需要在编译时进行处理。

只需检查一下,将NoSuchElementException替换为Exception,它将开始给您带来编译失败。