业务规则违规是否会引发异常?
不是.它是程序中正常条件处理逻辑的一部分(通常只是一种伪装形式的用户错误).
这取决于业务规则是什么,IMO.我冒昧地说"通常不会",但我会根据具体情况来看待它.我不认为有任何一个答案,因为不同的业务规则可能会保证,而其他人可能不会.
首先,Jeffrey Richter撰写的应用Microsoft .NET Framework编程(第402页)第18章中的几个引用:
"另一个常见的误解是'例外'表示'错误'."
"例外是违反程序界面的隐含假设."
如果我从您的问题中正确地推断出业务规则违规将是超出特定范围的数据(例如),那么您可以使用@ahockley建议的条件处理这个错误.根据Richter异常的定义,如果您的代码无法从您正在使用的任何存储库中检索业务规则,则适当使用异常.能够检索业务规则对于该接口具有合理的隐含假设,因此如果违反此假设则应抛出异常.
Richter的第一个引用(异常!=错误)的一个很好的例子是ThreadAbortException.如果调用Response.Redirect(url)(在ASP.NET中),即使重定向成功,也会抛出ThreadAbortException.为什么?ASP.NET页面执行的隐含假设是页面将完全执行.Response.Redirect(url)违反了这个假设,因此是例外.