gpt4 book ai didi

使用RequestDispatcher时Java最终没有被调用

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:57 25 4
gpt4 key购买 nike

我们有一个 Java servlet 充当 Web 应用程序的调度程序。对于每个请求,都会创建一个数据库连接,然后根据操作是否成功在请求结束时提交/回滚。它看起来像:

public class WebDispatcher extends HttpServlet {

protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

Connection conn = null;

try {

// Create connection

} catch(.....) {

} finally {

// Commit / Rollback connection

}

}

}

出现异常时就会出现问题。例如,如果他们无权执行某个操作,调度员必须重定向他们。它通过使用请求调度程序来完成此操作。

} catch(RoleAuthorizationException rae) {

request.getRequestDispatcher(.....).forward(request, response);

}

我原以为会调用“finally”,但在本例中似乎并非如此。对于每个异常,我们最终都会失去池中的连接。作为解决方法,我们关闭每个异常的连接,但为什么最终没有被调用?

最佳答案

最后is always called (甲骨文文档):

The finally block always executes when the try block exits.

检查finally block 中是否抛出异常(在连接关闭之前)。

另请参阅this answer .

关于使用RequestDispatcher时Java最终没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com