Обычно вы проверяете параметры конструктора, если они действительны. Если нет, вы обычно выбрасываете исключение.
Я также прочитал хороший совет по предоставлению статических методов для проверки параметров конструктора. Это позволяет пользователю вашего класса проверить, удастся ли ему все, что он собирается передать в конструкторе. Те, кто уверен, что параметры в порядке (они сделали своего рода проверку), пойдут напрямую с конструктором.
Также подумайте, что пользователь вашего класса, возможно, сделает с null вместо объекта (если использовался какой-то класс фабрики). Может ли это привести к исключению NullPointerException в следующей строке? Обычно хорошей идеей является как можно скорее остановить неправильные вещи, в этом случае вывести исключение и завершить. Это более чистое решение, чем возвращение нулевого значения, и если кто-то действительно хочет (это определенно не будет лучшей практикой), он все равно может поймать это исключение ...