我知道关于此错误存在很多类似的主题,但我尝试了一些建议,但我的问题仍然没有保存。 我正在关注本教程:https://www.youtube.com/watch?v=B3gEbC37DAM&list=PL1A506B159E5BD13E&index=2
这是我的代码:
public class JdbcDaoImpl {
public Circle getCircle(final int circleId) {
Connection conn = null;
try {
String driver = "org.apache.derby.jdbc.ClientDriver";
Class.forName(driver).newInstance();
conn = DriverManager.getConnection("jdbc:derby//localhost:1527//db");
PreparedStatement ps = conn.prepareStatement("SELECT * FROM circle where id= ?");
ps.setInt(1, circleId);
Circle circle = null;
ResultSet rs = ps.executeQuery();
if (rs.next()) {
circle = new Circle(circleId, rs.getString("name"));
}
rs.close();
ps.close();
return circle;
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
关于“conn.close();”它说:潜在的空指针访问。该变量在此位置可能为空。 当我运行程序时出现此错误: Exception in thread "main"java.lang.NullPointerException
我尝试了在类似主题上看到的解决方案,例如:
if(conn!=null){
conn.close();
}
但我仍然有错误。
预先感谢您的帮助!
最佳答案
最后 block 总是在您使用 try catch 时执行,当 conn = DriverManager.getConnection("jdbc:derby//localhost:1527//db");
抛出 NullPointerException
,它被您的 catch (Exception e)
捕获,然后finally block 开始在您执行的位置执行 conn.close()
,但是你的 conn 对象是 NULL
,它再次抛出 NullPointerException
,它没有被捕获,因为你正在捕获 catch (SQLException e )
关于java - 潜在的空指针访问。该变量在此位置可能为空。 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46153205/