我希望在我的应用程序中有任何未捕获的异常时执行一些自定义逻辑。通常我会做类似的事情:
Thread.setDefaultUncaughtExceptionHandler(myCustomHandler);
但是,Thread
已锁定在Google App Engine上。上面的代码引发了一个安全异常。无论如何要在Google App Engine上实现类似的功能吗?
编辑:我已经将我的方法实现为Servlet过滤器。我在Java Web编程方面的经验相当有限。有人可以评论这种方法吗?由于AppEngine中的所有请求都来自HTTP请求,我认为这是一个全面的解决方案。
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
chain.doFilter(request, response);
} catch (RuntimeException ex) {
// Work my magic here...
throw ex;
}
}
答案 0 :(得分:1)
Servlets自己处理线程,所以你不应该以这种方式处理它。
而是安装servlet Error Handler:
<error-page>
<error-type>com.package.YourException</error-type>
<location>/errors/handler</location>
</error-page>
然后将/errors/handler
映射到处理错误的servlet并返回相应的响应。