FindBugs не может генерировать NoSuchElementException

У меня есть следующий фрагмент кода:

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

Однако findbugs говорит, что есть BAD_PRACTICE:

Это: метод Iterator next() не может генерировать исключение NoSuchElementException (IT_NO_SUCH_ELEMENT). Этот класс реализует интерфейс java.util.Iterator. Однако его метод next() не может генерировать исключение java.util.NoSuchElementException. Метод next() следует изменить, чтобы он выдавал NoSuchElementException, если он вызывается, когда больше нет возвращаемых элементов.

Я не понимаю, как исправить код, чтобы пройти проверку findbugs. Любые идеи?


person Andrey Eliseev    schedule 14.01.2016    source источник
comment
Это действительно NoSuchElementException из java.util? Или, может быть, вы случайно импортировали другой?   -  person barfuin    schedule 15.01.2016
comment
Да, это java.util.NoSuchElementException   -  person Andrey Eliseev    schedule 15.01.2016
comment
Тогда нам нужно будет увидеть ваш полный класс или, лучше, самый простой класс, с помощью которого вы можете воспроизвести поведение. Это может быть недостаток детектора или какой-то части вашего кода.   -  person barfuin    schedule 15.01.2016


Ответы (1)


Попробуйте сделать mvn clean на проекте. У меня та же проблема, потому что SpotBugs использует ранее скомпилированный класс без изменений. Так что mvn clean или ручное удаление этого класса мне помогает.

Обновлять. Кроме того, вам, вероятно, не нужно вызывать метод hasNext() из next().

person user2896346    schedule 13.07.2020