gpt4 book ai didi

java - statements.executeQuery() 之谜。代码没有被执行,也没有捕获异常。

转载 作者:行者123 更新时间:2023-12-02 11:39:31 26 4
gpt4 key购买 nike

提供代码和输出。在互联网上搜索但没有找到解决方案。一切都编译并运行正常,直到“//PROBLEMATIC LINE”,其中执行直接转到“//HERE”,没有任何指示、异常或错误。我已经多次将此代码与 SQLServer 的 jdbc 驱动程序一起使用并且工作正常,我在这里可能缺少什么?在同一个应用程序中,我还将此代码与 mySql jdbc 驱动程序一起使用,并且工作正常。就在这段代码中,有一个问题。显然我正在使用 java.sql.*; .

try {
Class.forName(driver);
setResponse("Failure. 1");
connectionTest = DriverManager.getConnection(url, username, password);
setResponse("Failure. 2");
String query = "SELECT TOP (1) [id] FROM "+ table + ";";
PreparedStatement statement = connectionTest.prepareStatement(query);
setResponse("Failure. 3");
System.out.println(statement);
ResultSet resultset = statement.executeQuery(); //PROBLEMATIC LINE
System.out.println("DOES NOT EVEN PRINT THIS");
setResponse("Failure. 4");
if (resultset.first()) setResponse("Success.");
else setResponse("Failure. 5");
System.out.println("Query success: ");
setResponse("Failure. 6");
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
connectionTest.close(); //HERE
return getResponse();
}
catch (Exception e) {
e.printStackTrace();
return getResponse();
}
}

输出:

------------------------------------
-------------DATABASES--------------
------------------------------------
SQLServerPreparedStatement:1
Failure. 3
------------------------------------
----------TESTS COMPLETED-----------
------------------------------------

最佳答案

当抛出异常时,try block 将退出。当try block 退出时,finally block 将被执行。由于您的 finally block 中有 return 语句,因此您永远不会到达 catch block 。

不要在 finally block 中return。然后堆栈跟踪将被打印,您可以处理异常。

关于java - statements.executeQuery() 之谜。代码没有被执行,也没有捕获异常。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683631/

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