Соглашения об именах исключений Java - PullRequest
19 голосов
/ 02 марта 2010

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

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

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

Ответы [ 3 ]

8 голосов
/ 02 марта 2010

Вы можете иметь законное использование API и при этом иметь недействительные данные; это все семантика.

2 голосов
/ 02 марта 2010

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

РЕДАКТИРОВАТЬ Неверный и Незаконный используются как синонимы, это не делает различий в семантике, только технические проблемы, упомянутые выше.

РЕДАКТИРОВАТЬ: Из Postgres Документация Раздел 45.3.14. Хитрые слова, которых следует избегать:

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

0 голосов
/ 02 марта 2010

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

...