【问题标题】:Which Exceptions to declare/handle in struts.xml在 struts.xml 中声明/处理哪些异常
【发布时间】:2013-12-22 05:02:08
【问题描述】:

Java 中有CheckedUnchecked exceptions

我对处理checked exception 有一个愚蠢的疑问,因为我是Struts2 的新手。我们写try catch block 来处理checked exceptions。所以,我们可以在catch blockreturn view页面的名称中写return语句,显示Exception/Error

如果我抛出在struts.xml 文件中声明的checked exception,结果是重定向到Error/Exception 页面怎么办?

两者都是检查异常的正确方法吗?

【问题讨论】:

  • 完全取决于手头的应用程序

标签: java exception configuration struts2


【解决方案1】:

应捕获应用程序级别的异常。如果您抛出应用程序级异常但没有捕获它,则它可能会被 exception interceptor 捕获(如果它已配置为操作)。

注意,异常拦截器位于defaultStack 的底部,它不仅可以在操作中捕获异常,还可以在整个拦截器堆栈中捕获异常。如果您将此拦截器配置为映射它应处理的异常并在其后返回结果,也应将其配置为全局结果,那么您的异常将被捕获并返回结果。如果您不这样做,Web 容器将处理该异常。正确的做法是捕获异常并返回错误结果,但如果做不到,则应配置异常拦截器。

注意,您的代码中发生的 Struts 容器异常不会由异常拦截器处理。在这种情况下,您应该捕获异常并将操作的状态设置为错误,然后您可以在操作执行中首先检查该状态以返回错误结果或抛出可能被代码中的异常拦截器捕获的异常不能返回错误结果的地方。有关exception configuration 的更多信息,您可以在文档中找到。

【讨论】:

    【解决方案2】:

    答案完全取决于手头的应用需求。

    例如我编写了一个 API,因此对于所有异常都必须返回相同的页面。我的代码中有如下内容:

    <global-results>
                <result name="errHandler" type="chain">
                    <param name="actionName">errorProcessor</param>
                    <param name="namespace">/</param>
                </result>
            </global-results>
            <global-exception-mappings>
                <exception-mapping exception="java.lang.Throwable" result="errHandler" />
            </global-exception-mappings>
    

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2012-04-16
      • 2011-11-04
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多