当前位置: 首页 > 知识库问答 >
问题:

使用Optional.OrelseThrow在流内部抛出RuntimeException

谷梁宏恺
2023-03-14

以下代码运行良好:

Stream.of("key1", "key2")
   .map(key -> {
      SomeObject foo = service.find(key);
      if (foo == null) {
         throw new RuntimeException("No entity found with key: " + key);
      }
      return foo;
   })
   // ...

但是,当我使用orElseThrow从可选:

Stream.of("key1", "key2")
   .map(key -> Optional.ofNullable(someService.find(key))
         .orElseThrow(() -> new RuntimeException("No entity found with key: " + key)))
   // ...

两者都抛出了一个RuntimeException,有什么想法为什么带有可选的方法不起作用吗?

更新:我的构建基础设施,我尝试用IntelliJ和Maven编译它:

$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: C:\Tools\apache-maven-3.3.9
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_91\jre
Default locale: de_AT, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

共有1个答案

柳向明
2023-03-14

这是一个编译器错误JDK-8047338,它阻止正确的泛型异常类型推断。它在1.8.0_92版本中得到了部分解决。

 类似资料:
  • 问题内容: 我正在关注控制台错误。 这是我进入控制台的完整错误。我该怎么办? 问题答案: 当我第一次尝试节点js时,我遇到了同样的问题。 我注意到此问题正在发生,因为我在不同的目录中有一些具有相同名称的.js文件,这些文件位于同一主目录中。 我在主项目文件夹之外创建了另一个目录,并创建了一个.js文件。 在那之后,它运行良好。 前app.js

  • 我这里有个奇怪的错误: 我正在开发一个GAE应用程序来读取一些Twitter数据,在阅读了大量文档后,我让它在我的测试服务器上工作(在我的pc上运行),但在real(我的appspot域)上部署和测试后,它显示以下消息: 401:身份验证凭据(https://dev.twitter.com/pages/auth)失踪或失踪 我尝试重新创建我的OAuthAppToken和OAuthAppTokenS

  • 我使用的是Apache httpclient 4.3.6和httpcore 4.3.3(与opensaml 3.3.0捆绑)。我试图通过HTTPS通过代理获取网页,但每次都会收到SocketTimeoutException。HTTP连接工作正常。具体的超时并不重要;它只是需要更长的时间才能以更高的值失败。 示例代码: 尝试连接到代理时引发异常。堆栈跟踪是 这看起来很像Apache问题HTTPCLI

  • 我正在使用RabbitMQ的spring cloud stream。我试图通过在运行时删除队列并将消息发送到删除的队列来进行否定测试。 我正在侦听来自队列1的消息,并将消息发送到队列2(已删除的一个)。我原以为上面的代码会抛出异常,但事实并非如此。甚至从队列1读取的消息也已被确认。我在队列1和队列2上有一个死信队列,但消息没有进入DLQ。

  • 我有一个PrimefaceDataTable内的一个手风琴面板与动态标签数。可以通过单击列标题按每个列对DataTable进行排序。DataTable在更新行时在Primeface的DataTable类中抛出NullPointerExcture。只有在之前对表进行排序后才会发生错误。我已经在手风琴外面测试了同样的表,它没有显示错误。 我做错了什么? 我的xhtml: 它抛出的异常是: 来自后备be