使用orElseThrow方法时,Android Studio要求捕获Throwable

时间:2018-07-01 00:28:30

标签: java android optional

我正在Android Studio中编写应用程序。我当前的版本是3.1.0。我正在尝试使用Optional类中的orElseThrow方法。我检查了Android Studio的设置,它要求API级别至少为24,才能使用Optional。我目前正在使用API​​级别25,而我的JDK是1.8.0_151。

我使用Empty Activity创建了一个新的Android Studio项目。我创建了一个名为TestClass的类,其中包含以下代码:

package com.examples.myapplication;

import java.util.Arrays;
import java.util.List;

public final class TestClass {

    private final List<Integer> numbers;

    public TestClass() {
        numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    }

    public final int doesNumberExist(final int number) {
        return numbers.stream().filter(n -> n == number).findAny().orElseThrow(RuntimeException::new);
    }
}

我在这里遇到的问题是,Android Studio在dosNumberExist()方法中的orElseThrow()调用上给了我一个编译时错误。

错误是:

Unhandled exception: java.lang.Throwable

我尝试在不同的IDE中运行orElseThrow方法,并且该行代码上没有编译时错误,因此我认为问题出在Android Studio中,但我不知道该怎么办造成问题。我曾尝试提高API级别,但我最多只能提高到26,而这却无济于事。

根据我对orElseThrow()方法工作方式的理解,应该处理的异常类型是您在方法调用内抛出的所有已检查异常。在此示例中,我使用了RuntimeException,因此不必处理任何异常。

1 个答案:

答案 0 :(得分:-1)

public final int doesNumberExist(final int number) throws Throwable {
    Optional<int> f = numbers.stream().filter(n -> n == number).findAny();
    return  f.orElseThrow(RuntimeException::new);
}