web-applications - 应如何在 Web 应用程序中处理业务错误?

标签 web-applications error-handling spring-mvc

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

这种错误通常是如何从服务层冒泡到 Controller ,然后再到 View 的?服务方法应该抛出异常让 Controller 捕获,还是返回一个值或某种结果对象?

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

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

最佳答案

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

异常(exception)情况:

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

业务规则验证:

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

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

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

相关文章:

java - 使用显示标记从 JSP 页面中的行获取值

JSON仅在后端和前端之间

web-applications - 如果我使用struts2,Jboss如何处理http请求

android - 在Flutter应用程序中获取图片流错误

php - 警告 : stream_socket_client( ) , php_network_getaddresses getaddrinfo failed nodename nor serv name provided or notknown

java - 如何在没有 web.xml 的情况下编写 Encodingfilter 配置

javascript - 重定向到 URI 的散列版本的最佳方法?

json - Spring MVC HTTP 状态 405 - 不支持请求方法 'POST' - 主干请求

Spring Restful 服务与 Spring Boot - NoSuchBeanDefinitionException

regex - 如何在flex中匹配一串流浪字符(不匹配其他正则表达式)?