Подтвердить что ты не робот

Соглашения об именовании исключений Java

В Java существует семантическая разница между использованием Недопустимый "(как в IllegalArgumentException) по сравнению с Недопустимый" (как в javax.activity.InvalidActivityException)?

В ходе задания стало полезно написать подкласс IllegalArgumentException, чтобы представить последовательность входных символов, которые не могут быть обозначены, и мне интересно, использует ли конвенция использование InvalidTokenException или IllegalTokenException.

Единственное различие, которое я могу найти до сих пор, заключается в том, что java.lang, похоже, предпочитает "Недопустимый", а javax.* предпочитает "Invalid". Однако существует также java.security.InvalidParameterException, который является подклассом IllegalArgumentException.

4b9b3361

Ответ 1

У вас может быть юридическое использование API и все еще есть недействительные данные; это все семантика.

Ответ 2

javax.activity.InvalidActivityException наследуется от java.rmi.RemoteException, и вам, вероятно, не нужна эта зависимость. См. Также Javadoc

ИЗМЕНИТЬ как Недействительные, так и Незаконные используются синонимом, они не различают семантику, а только технические проблемы, упомянутые выше.

EDIT: From Postgres Документация Раздел 45.3.14. Трудные слова, которых следует избегать:

Нелегальная. "Незаконный" означает нарушение закона, остальное "недействительно". Еще лучше, скажите, почему это недействительно.

Ответ 3

AFAIK, IllegalArgumentException следует использовать только тогда, когда вы хотите сообщить о некорректном использовании вызова метода API. То, что, по-видимому, вы описываете, является сценарием, когда API был использован неправильно, поэтому я думаю, что лучшим вариантом будет исключение IllegalArgumentException.