下面代码的等价lambda表达式是什么?
List<String> List = new ArrayList<String>();
for (String var: alreadyList) {
try {
if (getNumber(var) == num) {
filteredList.add(var);
}
} catch(NullPointerException exception) {
throw exception;
}
}
getNumber
方法抛出Nullpointerexception
,并且上述代码也位于向调用方抛出相同异常的方法中。
这是常见的lambda表达式,但如何在其中添加Nullpointerexception
?
List<String> List = alreadyList.stream()
.filter(var -> getNumber(var) == num)
.collect(Collectors.toList());
3条答案
按热度按时间wd2eg0qa1#
捕获NPE是不好的做法。NPE是未检查的异常。从docs:
如果参数为null,则该方法可能会引发NullPointerException,这是一个未经检查的异常。
相反,为什么不添加另一个过滤器到流:
raogr8fs2#
捕捉NullPointerException是一种不好的做法。您可以使用Optional类来避免它,并且仅在对象存在时执行必要的操作。您可以从getNumber()方法引发其他异常,而不会出现任何问题
nue99wik3#
永远不要捕捉包括
NullPointerException
在内的未检查异常。你所做的只是重新抛出它。或者过滤掉null
值。您提供的代码:
已经抛出
NullPointerException
以防getNumber(var)
失败。您的try-catch
没有做任何不同的事情。