【问题标题】:FindBugs can't throw NoSuchElementExceptionFindBugs 不能抛出 NoSuchElementException
【发布时间】:2016-01-14 18:14:50
【问题描述】:

我有以下代码 sn-p:

@Override
public Message next() {
    if (!this.hasNext()) {
        throw new NoSuchElementException();
    }
    // return statement
}

但是,findbugs 说有 BAD_PRACTICE:

它:迭代器 next() 方法不能抛出 NoSuchElementException (IT_NO_SUCH_ELEMENT) 此类实现 java.util.Iterator 界面。但是,它的 next() 方法无法抛出 java.util.NoSuchElementException。 next() 方法应该改变 所以如果在没有时调用它会抛出 NoSuchElementException 更多元素返回。

我不明白如何修复代码以通过 findbugs 检查。有什么想法吗?

【问题讨论】:

  • 真的是来自java.utilNoSuchElementException吗?还是您不小心导入了另一个?
  • 是的,它是 java.util.NoSuchElementException
  • 然后我们需要查看您的完整课程,或者更好的是您可以重现行为的最简单的课程。这可能是检测器的缺陷,也可能是您的代码的某些部分。

标签: findbugs nosuchelementexception


【解决方案1】:

尝试在项目上创建mvn clean。我有同样的问题,因为 SpotBugs 使用以前编译的类而没有更改。所以mvn clean或者手动删除这个类对我有帮助。

更新。此外,您可能不需要从next() 方法调用hasNext()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多