Подтвердить что ты не робот

Является ли хорошей практикой бросать исключение из методов Validate() или лучше возвращать значение bool?

Рекомендуется ли исключать исключения из методов проверки, например:

ValidateDates();
ValidateCargoDetails();

Кроме этого: часто используется шаблон шаблона проверки достоверности?

4b9b3361

Ответ 1

Я бы предложил вернуть объект ValidationResult, содержащий ValidationFailures. Вы никогда не должны использовать исключения как часть вашего логического кодирования. Исключения для исключений

Ответ 2

Я обычно использую visitor pattern для проверки ввода; скопировав все ошибки в список или что-то, чтобы показать пользователя. Логика идет, проверяя список ошибок проверки, если он найден, информирует пользователя, в противном случае хорошо идти.

IMO, ошибки проверки не являются чем-то исключительным, поэтому его не следует рассматривать как один.

Ответ 3

Я бы сказал, все зависит от того, что/как вы делаете проверку. Но в конце концов разработчик всегда может игнорировать возвращенный результат (это проблема с ними), они не могут игнорировать исключение, не записывая явный код для этого.

Ответ 4

Ало зависит от того, насколько важны исключительные ошибки проверки, насколько важно, чтобы это было правильно.

Если ваши ошибки проверки являются редкими и серьезными или смертельными, когда они возникают, я бы использовал исключения или даже AssertionErrors. Большинство парсеров используют Исключения, и это указывает на невозможность продолжения обработки.

Если ваш отказ проверки ожидается как при нормальных операциях и не указывает, что вы не можете продолжать обработку, я бы предложил использовать шаблон посетителя или вернуть список проблем (который может быть пустым)

Ответ 5

Исключение броска должно не использоваться для управления потоком приложения. Как следует из названия, это происходит в случаях исключительных, в то время как проверка может обычно терпеть неудачу. Они также дорогие и влияют на производительность.

Я бы пошел с возвратом булевой плюс строка для причины.

Ответ 6

Пользователи, вводящие неверные данные, являются самим определением исключения. При написании бизнес-требований для решения вы всегда записываете пути без ошибок в качестве основных путей потока и ошибок в качестве исключительных путей. Использование исключений для проверки вполне приемлемо. Проверка с помощью исключений также позволяет вам определить приоритет порядка в том, как они обрабатываются, и обрабатывать ошибку по-разному в зависимости от того, на каком уровне вы находитесь в стеке архитектуры (строка, описывающая ошибку, мало используется на уровне доступа к данным).