假设我有一个可以将 Persons 存储在数据库中的 Web 应用程序。每个人都必须有一个唯一的电子邮件地址(或用户名或其他)。如果用户尝试使用已存在的电子邮件地址添加人员,则应返回带有错误消息的表单(就像在典型的验证失败期间一样)。

这种错误是如何最典型地从服务层冒泡到 Controller 然后到 View 的?服务方法是否应该抛出异常以供 Controller 捕获,或者返回一个值或某种结果对象?

如果我最终想使用我的服务层来生成 Web 服务,这是否会改变我的处理方式?

任何建议或最佳实践/示例应用程序的链接将不胜感激。

最佳答案

基本上有两种方法可以做到这一点:异常和返回业务规则验证的结果。每种方式都有其优点和缺点,但基本上:

异常(exception):

  • 时你只能返回一个失败的结果
  • 异常易于实现并且不会使您的业务逻辑复杂化 - 只需检查条件并抛出业务异常
  • 异常仅适用于阻止规则
  • 打开的事务可以轻松回滚

  • 业务规则验证:
  • 您可以检查多个业务规则并将损坏的列表返回给用户
  • 多个规则会使您的逻辑流程复杂化,因为它们往往会弄乱
  • 方法的返回类型
  • 它们允许处理更多场景,例如非阻塞信息规则

  • 我认为这在很大程度上取决于哪种方法更适合的应用程序,因此没有简单的答案。长期以来,我成功地将异常用于业务规则,现在我倾向于利用第二种方法。

    关于web-applications - 应如何在 Web 应用程序中处理业务错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/871050/

    10-12 23:04