如何配置spring HandlerExceptionResolver来处理在jsp中抛出的NullPointerException?

rai*_*tin 10 spring jsp exception-handling

从一个jsp抛出一个NullPointerException例如使用 <% null.toString(); %>

HandlerExceptionResolver不处理此异常,而是抛出到Web容器(tomcat)并转换为 code 500 error.

如何配置spring以在HandlerExceptionResolver中获取该错误?

细节:

  • Spring可以配置为处理控制器内部抛出的异常,但不能处理视图抛出的异常.
  • 当然我可以解决NullPointerException,但我想设计一个解决方案,它将优雅地解决Web应用程序上的任何可能的问题,以便向用户显示用户友好的消息.

Met*_*002 6

请参阅HandlerInterceptor接口.你会想要afterCompletion方法.然后,您可以拦截响应,然后设置适当的标头信息以重定向到容器配置的错误网页.你是对的,Spring没有这个功能,这必须由web.xml指定,它确定哪些代码映射到哪些页面.


Ste*_* B. 1

我没有使用过 spring 框架的这个特定部分,但文档说

“由对象实现的接口可以解决处理程序映射或执行期间抛出的异常,在典型情况下是错误视图。实现者通常在应用程序上下文中注册为 bean。

错误视图类似于错误页面 JSP,但可以与任何类型的异常一起使用,包括任何已检查的异常,并具有针对特定处理程序的潜在细粒度映射。”

所以我想,鉴于 NullPointer 扩展了 RuntimeException,该框架并不是旨在捕获它。是否有原因无法直接在控制器中处理异常?