Java 如何处理呈现视图时引发的异常
对于处理请求时抛出的异常,Spring有许多不同的方法来注册异常处理程序。在呈现视图时引发异常时,是否有方法应用类似的异常处理?至少,我希望能够执行一些日志记录。问题是,视图渲染期间抛出的异常不能做很多事情。特别是,它们通常无法呈现包含错误报告的HTML页面。。。甚至发送5xx响应。。。因为响应通常会在引发异常之前“提交” 因此,您(可能)能做的最好的事情是:Java 如何处理呈现视图时引发的异常,java,spring,jsp,exception-handling,Java,Spring,Jsp,Exception Handling,对于处理请求时抛出的异常,Spring有许多不同的方法来注册异常处理程序。在呈现视图时引发异常时,是否有方法应用类似的异常处理?至少,我希望能够执行一些日志记录。问题是,视图渲染期间抛出的异常不能做很多事情。特别是,它们通常无法呈现包含错误报告的HTML页面。。。甚至发送5xx响应。。。因为响应通常会在引发异常之前“提交” 因此,您(可能)能做的最好的事情是: 为捕获并记录异常的视图对象创建包装器,或 在servlet过滤器中进行日志记录 但很可能web容器可以配置为记录未捕获的异常 更新
- 为捕获并记录异常的视图对象创建包装器,或
- 在servlet过滤器中进行日志记录
我刚刚注意到spring的HandlerInterceptor类公开了一个“afterCompletion”方法,当抛出异常时将调用该方法。关于使用此过滤器与使用过滤器的好处,您有什么想法吗 试试看。:-)但鉴于以下情况,我怀疑它是否会起作用
对于呈现jsp时引发的异常,使用筛选器或拦截器不起作用。它会打印出错误: 不幸的是,异常没有向上传播到过滤器。我想添加我自己的日志,它发送错误通知并记录有关失败请求的其他信息。监视日志文件以发现错误不是一个好的选择
使用servlet过滤器进行日志记录听起来很有希望。它将允许记录有关导致异常的请求的其他信息。我将在周一试一试,并在它运行时发布一个示例。我刚刚注意到spring的HandlerInterceptor类公开了一个“afterCompletion”方法,当抛出异常时将调用该方法。关于使用过滤器的好处有什么想法吗?对于呈现jsp时抛出的异常,使用过滤器或拦截器不起作用。它确实打印出错误:2012年12月16日12:18:03 PM org.apache.catalina.core.ApplicationDispatcher调用Servlet jsp抛出异常javax.el.PropertyNotFoundException:在java.lang.String类型上找不到属性“fooo”“不幸的是,异常没有向上传播到筛选器。我想添加我自己的日志,它发送错误通知并记录有关失败请求的其他信息。监视日志文件以发现错误不是一个好的选择
Dec 16, 2012 12:18:03 PM org.apache.catalina.core.ApplicationDispatcher
invoke SEVERE: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'fooo' not found on
type java.lang.String"