假设我有一个 Web 应用程序可以将人员存储在数据库中。每个人都必须有一个唯一的电子邮件地址(或用户名或其他)。如果用户尝试添加一个电子邮件地址已经存在的人,则该表单应返回一条错误消息(就像在典型的验证失败期间一样)。
这种错误通常是如何从服务层冒泡到 Controller ,然后再到 View 的?服务方法应该抛出异常让 Controller 捕获,还是返回一个值或某种结果对象?
如果我最终想使用我的服务层来生成 Web 服务,这会改变我的处理方式吗?
任何建议或指向最佳实践/示例应用程序的链接都将不胜感激。
最佳答案
基本上有两种方法可以做到这一点:异常和返回业务规则验证的结果。每种方式都有其优点和缺点,但基本上:
异常(exception)情况:
- 一次只能返回一个失败的结果
- 异常易于实现,不会使您的业务逻辑复杂化 - 只需检查条件并抛出业务异常
- 异常(exception)仅适用于阻止规则
- 可以轻松回滚打开的事务
业务规则验证:
- 您可以检查多个业务规则,并将损坏的列表返回给用户
- 多个规则会使您的逻辑流程复杂化,因为它们往往会弄乱方法的返回类型
- 它们允许处理更多场景,例如非阻塞信息规则
我认为这在很大程度上取决于应用程序哪种方法更适合,所以没有简单的答案。长期以来,我成功地使用业务规则的异常,现在我倾向于利用第二种方法。
关于web-applications - 应如何在 Web 应用程序中处理业务错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/871050/