Вы можете использовать одну из множества библиотек, разработанных для облегчения проверки предварительных условий.Многие коды в Google Guava используют com.google.common.base.Preconditions
Простые статические методы, вызываемые в начале ваших собственных методов для проверки правильности аргументов и состояния.Это позволяет заменять такие конструкции, как
if (count <= 0) {
throw new IllegalArgumentException("must be positive: " + count);
}
, на более компактные
checkArgument(count > 0, "must be positive: %s", count);
. Используется checkNotNull
, то есть широко в Гуаве .Затем вы можете написать:
import static com.google.common.base.Preconditions.checkNotNull;
//...
public SomeClass(Object one, Object two) {
this.one = checkNotNull(one);
this.two = checkNotNull(two, "two can't be null!");
//...
}
Большинство методов перегружены или не принимают сообщение об ошибке, фиксированное сообщение об ошибке или шаблонное сообщение об ошибке с переменными.
Вкл IllegalArgumentException
vs NullPointerException
В то время как ваш исходный код генерирует IllegalArgumentException
на null
аргументах, Preconditions.checkNotNull
Guava вместо NullPointerException
выдает
Вот цитата из Effective JavaИздание 2-е: Пункт 60: Поддерживайте использование стандартных исключений :
Возможно, все ошибочные вызовы методов сводятся к недопустимому аргументу или недопустимому состоянию, но другие исключения стандартно используются для определенные виды незаконных аргументов и состояний.Если вызывающая сторона передает null
в каком-либо параметре, для которого нулевые значения запрещены, соглашение предписывает бросить NullPointerException
вместо IllegalArgumentException
.
A NullPointerException
не зарезервировано только для случаев, когдаВы получаете доступ к членам null
ссылки;довольно стандартно бросать их, когда аргумент равен null
, когда это недопустимое значение.
System.out.println("some string".split(null));
// throws NullPointerException