在struts xml中声明/处理哪些exception
Java中有Checked
和Unchecked exceptions
。
由于我是Struts2
新手,因此我对处理已checked exception
有一个愚蠢的怀疑。 我们编写try catch block
来处理已checked exceptions
。 因此,我们可以在catch block
编写return语句并return view
显示Exception
/ Error
的页面return view
名称。
如果我抛出在struts.xml
文件中声明的checked exception
并且结果是重定向到Error
/ Exception
页面怎么办?
这两种方法都是检查exception的正确方法吗?
应该捕获应用程序级exception。 如果你抛出一个应用程序级exception并且没有捕获它,那么如果它被配置为动作,它可能被exception
拦截器捕获。 注意,exception拦截器位于defaultStack
底部,它不仅可以捕获动作中的exception,还可以捕获整个拦截器堆栈中的exception。 如果您将此拦截器配置为映射它应该处理的exception,并在它之后返回结果(也应该配置为全局结果),那么将捕获您的exception并返回结果。 如果没有,Web容器将处理exception。 正确的方法是捕获exception并返回错误结果,但如果你不能这样做,那么你应该配置exception拦截器。 注意,代码中发生的struts容器exception不是由exception拦截器处理的。 在这种情况下,您应该捕获exception并将操作的状态设置为error,然后您可以在操作执行中首先检查该状态以返回错误结果或抛出可能由代码中的exception拦截器捕获的exception你无法返回错误结果的地方。 有关exception配置的更多信息,请参阅文档。
答案完全取决于手中的应用要求。
例如,我编写了一个API,因此对于所有exception,必须返回相同的页面。 我的代码中有类似下面的内容:
errorProcessor /
- Java中的exception和inheritance
- 获取exceptionorg.apache.logging.slf4j.SLF4JLoggerContext无法强制转换为org.apache.logging.log4j.core.LoggerContext
- java:无法重新抛出exception:未处理的exception类型exception
- 为什么编译?
- RSA BadPaddingException:数据必须以零开头
- RestEasy – 无法找到MessageBodyReader?
- Java,Parse JSON我知道的对象是null
- 为什么EOFException主要由数据输入流使用?
- 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?