Java 处理从自定义视图解析程序引发的异常

Java 处理从自定义视图解析程序引发的异常,java,spring,spring-mvc,exception-handling,Java,Spring,Spring Mvc,Exception Handling,我有一个自定义视图解析器和一个异常解析器。 当从控制器代码抛出异常时,将调用异常解析程序,并将异常映射到带有错误消息的视图上 但是,当我从其中一个视图解析程序抛出异常时,它会传播到应用程序服务器,并且不会使用注册的异常解析程序进行解析 我想这是因为异常解析器是“低于”视图解析器,因为它返回的视图必须被解析。。。因此,视图解析程序中的异常被抛出到外部。。但我仍然不知道如何以精心设计的方式处理这种情况 请建议。通常,当异常解析器处理从控制器引发的异常时,它会返回一个视图名称,以便呈现错误页面 所以,

我有一个自定义视图解析器和一个异常解析器。 当从控制器代码抛出异常时,将调用异常解析程序,并将异常映射到带有错误消息的视图上

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

我想这是因为异常解析器是“低于”视图解析器,因为它返回的视图必须被解析。。。因此,视图解析程序中的异常被抛出到外部。。但我仍然不知道如何以精心设计的方式处理这种情况


请建议。

通常,当异常解析器处理从控制器引发的异常时,它会返回一个视图名称,以便呈现错误页面

所以,如果一个视图解析器抛出一个异常,你能有意义地处理它吗?错误最终必须以某种方式呈现,但是如果不是视图解析器本身,谁来解析该视图呢


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

感谢@skaffman的回复。我确实需要ViewResolver中的异常处理程序,因为它在其中呈现一些Google闭包模板,如果模板呈现失败或无法在某处找到模板,它可能会引发一些异常。你能建议一种在ViewResolver中呈现不同视图的方法吗?@schhajed:你是说异常是从视图本身而不是视图解析程序中引发的?视图解析程序不呈现视图,它们只是将视图名称转换为
视图
对象,然后分别呈现。是的,在我的示例中,视图本身可以引发异常,因为视图呈现的是Google Closure模板对象,如果没有提供正确的输入,可能会失败。请建议。