Должно ли нарушение бизнес-правила создавать исключение? - PullRequest
14 голосов
/ 10 февраля 2009

Должно ли нарушение бизнес-правила генерировать исключение?

Ответы [ 14 ]

0 голосов
/ 13 февраля 2009

Бизнес-правила не должны выдавать исключение, если только они не используются для проверки параметров некоторых API (например, проверки правильности запросов) или в модульных тестах (например: с использованием бизнес-правил для упрощения модульных тестов .NET ).

Обычно бизнес-правила выводят сообщения об ошибках и предупреждения в область проверки.

0 голосов
/ 11 февраля 2009

Обычно я помещаю условие в объект спецификации, который реализует

bool IsVerfiedBy(T entity);

Таким образом, вы можете проверить состояние без исключения.

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

Например, если ваша сущность должна находиться в определенном состоянии перед сохранением, сгенерируйте исключение, когда спецификация не проверена, но используйте спецификацию перед сохранением, чтобы исключение не произошло.

0 голосов
/ 10 февраля 2009

Это действительно зависит от того, что это и где это.

Если от пользователя поступают какие-то данные, то, как сказал Леванд, это вопрос проверки. Валидация может оказаться как успешной, так и неудачной, оба варианта являются ожидаемыми и имеют четкие сценарии дальнейших действий.

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

Часто это вопрос перспективы и дизайна вашего приложения.

0 голосов
/ 10 февраля 2009

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

...