Я всегда проверяю аргументы открытых функций и выкидываю исключения, когда что-то не так. (Для частных помощников я использую утверждения).
Как это:
if( a < 0 || a >= b )
throw new IllegalArgumentException("'a' must be greater or equal to 0 and
smaller than b ");
Но меня всегда раздражает написание этих сообщений об ошибках. Сообщение кажется мне излишним, так как это просто отрицание утверждения
a < 0 || a >= b
.
Также часто бывает, что я переименовываю переменную с помощью рефакторинга (в eclipse), и тогда сообщение не отражает изменения. Или я меняю условия и забываю менять сообщения.
Было бы здорово, если бы я мог написать что-то вроде:
assertArgument(a >= 0 && a < b);
Это должно вызвать исключение IllegalArgumentException с сообщением типа
"violated argument assertion: a >= 0 && a < b."
В C вы можете написать макрос (на самом деле в C assert это просто макрос).
Есть ли простой способ сделать что-то подобное в Java?
Спасибо!