这个异常在 Scala 中意味着什么:
java.util.NoSuchElementException: Predicate does not hold for ...
最佳答案
导致这种情况的一种方式是,如果您有一个将 Try 与谓词( if
语句)结合在一起的 for-comprehension:
for {
x <- Try(expr) if booleanExpr
} {
...
}
filter
如果 booleanExpr
,Try 的方法可以抛出 java.util.NoSuchElementException 以跳过循环体计算结果为 false
.reason
该异常的字段是“谓词不适用......”正如@Guillaume 在评论中指出的那样,正是 Try 的实现通过它实现
filter
的方式导致了这种情况。 -- 当您在 for comprehension
中使用条件 (if) 时由编译器调用的方法:if (p(value)) this
else Failure(new NoSuchElementException("Predicate does not hold for " + value))
关于Scala:谓词不包含异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752300/