【问题标题】:How to throw an exception using lambda expression如何使用 lambda 表达式引发异常
【发布时间】:2020-12-27 14:42:02
【问题描述】:

如果数组包含负数,我需要抛出异常。

使用 java8 功能的最佳实践是什么?

Integer array = {11, -10, -20, -30, 10, 20, 30};

array.stream().filter(i -> i < 0) // then throw an exception

【问题讨论】:

  • 你不应该在流处理中抛出异常,这是一种反模式
  • @GovindaSakare 感谢您提供信息。请问您有相关资料或阅读更多内容的地方吗?

标签: java exception lambda java-8


【解决方案1】:

您可以使用 Stream::anyMatch 返回一个布尔值,然后如果为 true 则抛出如下异常:

boolean containsNegativeNumber = array.stream().anyMatch(i -> i < 0);
if (containsNegativeNumber) {
    throw new IllegalArgumentException("List contains negative numbers.");
}

或者直接这样:

if (array.stream().anyMatch(i -> i < 0)) {
    throw new IllegalArgumentException("List contains negative numbers.");
}

【讨论】:

  • 我认为第二种方法很棒,因为您不使用任何变量来抛出异常
猜你喜欢
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 2019-11-07
  • 1970-01-01
相关资源
最近更新 更多