В javadoc, в чем разница между тегами @throws и @exception? - PullRequest
31 голосов
/ 01 апреля 2011

Возьмем, к примеру, следующую реализацию стека символов на основе массива:

public char peek() throws Underflow {
    if (!isEmpty()) {
        return stack[pos];
    } else {
        throw new Underflow("Peeking at an empty stack.");
    }
}

Назад, когда я использую только текстовый редактор, я всегда использую тег @exception, но теперь моя IDE (Netbeans) использовал @throws при создании javadoc.

Так что мой вопрос: в чем разница между ними и когда следует отдавать предпочтение одному над другим (например, используя приведенный выше код)?

Ответы [ 3 ]

48 голосов
/ 01 апреля 2011

Нет, это синонимы. Из документов :

Документирование исключений с помощью @throws Tag
ПРИМЕЧАНИЕ. - Теги @throws и @exception являются синонимами.

11 голосов
/ 01 апреля 2011

@throws было добавлено, потому что это ключевое слово (предложение throws в объявлении метода),

, и, как глагол, его просто более естественно читать.Это читается как предложение:

@throws NullPointerException

, в то время как это выглядит более избыточным:

@exception NullPointerException

В противном случае оба являются синонимами

5 голосов
/ 11 сентября 2013

@exception не на 100% правильно, если код выдает Throwable.@throws точнее.(Я понимаю, что нет хорошего сценария использования throw new Throwable(), но теоретически это разрешено.)

...