Я собираюсь перефразировать точку зрения, которую Стинкиминки делал в нижней части поста:
Общепринятый подход для проверки ввода пользователя (или ввода из файлов конфигурации и т. Д.) Заключается в использовании проверки перед фактической обработкой данных. В большинстве случаев это хороший ход проектирования, даже если он может привести к нескольким вызовам алгоритмов синтаксического анализа.
Как только вы узнаете, что правильно проверили введенные пользователем данные, , тогда можно безопасно проанализировать и игнорировать, зарегистрировать или преобразовать в RuntimeException NumberFormatException.
Обратите внимание, что этот подход требует от вас рассмотрения вашей модели в двух частях: бизнес-модель (где мы на самом деле заботимся о наличии значений в формате int или float) и модель пользовательского интерфейса (где мы действительно хотим, чтобы пользователь мог поместить во что угодно).
Для того чтобы данные могли мигрировать из модели пользовательского интерфейса в бизнес-модель, они должны пройти этап проверки (это может происходить в зависимости от поля, но в большинстве сценариев требуется проверка всего объекта, который настраивается).
Если проверка не пройдена, пользователю предоставляется обратная связь, информирующая его о том, что он сделал неправильно, и дает возможность исправить это.
Библиотеки связывания, такие как JGoodies Binding и JSR 295, значительно упрощают реализацию такого рода вещей, чем это может показаться, и многие веб-платформы предоставляют конструкции, которые отделяют пользовательский ввод от реальной бизнес-модели, заполняя бизнес-объекты только после завершения проверки. .
С точки зрения проверки файлов конфигурации (другой вариант использования представлен в некоторых комментариях), одно значение - указать значение по умолчанию, если определенное значение вообще не указано, - но если данные отформатированы неправильно (кто-то набирает «о» вместо «ноль» - или они скопированы из MS Word, и все обратные метки получили забавный символ юникода), тогда требуется какая-то системная обратная связь (даже если приложение просто сбрасывает приложение, бросая исключение времени выполнения).