О, демагогия пошла. Где я топил за exception'ы? Я указал на то, что подход с возвращением nil'а не всегда рабочий. Особенно когда нужно пользователю сказать в чём же ошибка.
Ноги у проблемы растут из того, что "ошибки" (т.е. когда что-то может пойти не так) чаще происходят в нечистых функциях (CD поцарапанный, кабель перерезанный и т.п.). А для чистой функции зачастую легко задаётся область определения и множество значений. И бывает, что nil - это вполне себе элемент множества значений.
Так, если тебе нужна функа, которая отвечает на вопрос, "валидно входное значение или нет", то так и запили её, чтобы она называлась бы valid? и отвечала только одно из: true или false.