Ответ 1
Хорошим принципом при написании программного обеспечения является уловить ошибки как можно раньше. Чем быстрее вы заметите, например, плохое значение, например null
, переданное методу, тем легче выяснить причину и устранить проблему.
Если вы передадите null
методу, который не должен получать null
, скорее всего произойдет NullPointerException
, как вы уже заметили. Однако исключение может не произойти до тех пор, пока несколько методов не опустится ниже, и когда это произойдет где-то глубоко, будет труднее найти точный источник ошибки.
Итак, лучше, когда методы проверяют свои аргументы вперед и генерируют исключение, как только обнаруживают недопустимое значение, например null
.
edit - О однопараметрической версии: даже если вы не укажете сообщение об ошибке, проверка аргументов и исключение исключения на раннем этапе будут более полезными, чем пропускать null
, пока исключение не произойдет где-то глубже. Трассировка стека будет указывать на строку, в которой вы использовали Objects.requireNonNull(...)
, и это должно быть очевидно для вас как разработчика, что означает, что вы не должны пропускать null
. Когда вы позволяете a NullPointerException
произойти неявно, вы не знаете, имел ли исходный программист намерение, чтобы переменная не была null
.