java - 处理自定义 View 解析器抛出的异常

标签 java spring spring-mvc exception

我有一个自定义 View 解析器和一个异常解析器。 当 Controller 代码抛出异常时,将调用异常解析器并将异常映射到带有错误消息的 View 。

但是,当我从其中一个 View 解析器抛出异常时,它会向上传播到应用程序服务器,并且不会使用已注册的异常解析器进行解析。

我想发生这种情况是因为异常解析器在 View 解析器“下方”,因为它返回的 View 必须被解析......因此来自 View 解析器的异常被抛出......但我仍然不知道如何处理以一种精心设计的方式出现这种情况。

请提出建议。

最佳答案

通常,当异常解析器处理从 Controller 抛出的异常时,它会返回一个 View 名称,以便可以呈现错误页面。

因此,如果 View 解析器抛出异常,您可以用它做什么有意义的事情?错误最终必须以某种方式呈现,但如果不是 View 解析器本身,谁来解析该 View ?

为了回答您的问题,除了标准的 servlet 容器机制之外,我不知道有任何机制可以捕获 View 解析器抛出的异常。如果您的 View 解析器中有错误条件,我建议您 (a) 修复它们(如果它们是错误),或 (b) 在 View 解析器中捕获这些异常,并呈现不同的查看显示错误。

关于java - 处理自定义 View 解析器抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8784561/

相关文章:

java - 创建 Spring Web 应用程序 : Steps?

java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 7

java - Spring数据分页和排序存储库,具有多个字段和日期

java - 客户端/服务器 java 应用程序中的 JVM_Bind 错误

java - 为什么我应该使用 Runnable 而不是 Thread?

带有点 (.) 的 Spring MVC @PathVariable 被截断

java - 测试 Spring Boot 库模块

spring - JSTL 中 defaultHtmlEscape web.xml 的用法

java - hibernate 保存后复合 ID 不会改变

spring - 如果我使用 Spring Boot 将 web 应用程序开发为 war ,为什么我需要 main 方法?