Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring MVC web应用程序中,您应该如何处理控制器级别以下发生的异常?_Java_Model View Controller_Spring_Exception Handling_Spring Mvc - Fatal编程技术网

Java 在Spring MVC web应用程序中,您应该如何处理控制器级别以下发生的异常?

Java 在Spring MVC web应用程序中,您应该如何处理控制器级别以下发生的异常?,java,model-view-controller,spring,exception-handling,spring-mvc,Java,Model View Controller,Spring,Exception Handling,Spring Mvc,假设您有一个结构如下的Spring web应用程序: com/ myapp/ controller/ model/ service/ 您应该如何处理控制器级别以下发生的异常 您是否应该让模型层和服务层中的方法将其异常抛出到控制器层 一旦它们到达控制器,该如何处理它们 您是否总是向用户显示相同的错误页面,但在日志文件中写入详细的异常情况?这在很大程度上取决于具体情况: 您可以将异常消息(由某些异常转换机制转换为人类可读的表示形

假设您有一个结构如下的Spring web应用程序:

com/
    myapp/
          controller/
          model/
          service/
您应该如何处理控制器级别以下发生的异常

您是否应该让模型层和服务层中的方法将其异常抛出到控制器层

一旦它们到达控制器,该如何处理它们


您是否总是向用户显示相同的错误页面,但在日志文件中写入详细的异常情况?

这在很大程度上取决于具体情况:

  • 您可以将异常消息(由某些异常转换机制转换为人类可读的表示形式)与验证消息一起显示,例如“电子邮件发送失败,请稍后重试”

  • 如果无法从中恢复异常,则可以重定向到显示可读解释的页面

  • 你可以重定向到一个通用的500页,上面写着“哎呀,出了点问题”


就可用性而言,选择一个您认为最适合您的用例的选项。

这在很大程度上取决于具体的用例:

  • 您可以将异常消息(由某些异常转换机制转换为人类可读的表示形式)与验证消息一起显示,例如“电子邮件发送失败,请稍后重试”

  • 如果无法从中恢复异常,则可以重定向到显示可读解释的页面

  • 你可以重定向到一个通用的500页,上面写着“哎呀,出了点问题”


选择一个在可用性方面最适合您的用例的选项。

我认为记录和处理系统异常应该由服务层完成。如果您从面向服务的角度考虑,可能没有一个UI调用特定的服务。所有系统级清理都需要在该层中进行


话虽如此,任何异常都不应逃脱控制器层。服务层和控制器层之间需要有足够的通信,以便控制器可以友好、易于理解的方式告诉用户正在发生什么。向用户反馈信息是控制器的职责。

我认为记录和处理系统异常应该由服务层完成。如果您从面向服务的角度考虑,可能没有一个UI调用特定的服务。所有系统级清理都需要在该层中进行

话虽如此,任何异常都不应逃脱控制器层。服务层和控制器层之间需要有足够的通信,以便控制器可以友好、易于理解的方式告诉用户正在发生什么。控制器的职责是向用户反馈信息