解决 DatabaseObjectNotClosedException

来源:互联网 发布:服务器网络不稳定 编辑:程序博客网 时间:2024/06/06 03:40

今天在运行测试应用的时候出现以下exception:

 

04-05 17:09:21.988: E/Database(3101):android.database.sqlite.DatabaseObjectNotClosedException: Application did notclose the cursor or database object that was opened here

 

貌似说我没有关掉数据或者数据库游标,可是查了半天代码也找不到哪里错了,因为所有用到的db或者cursor都写close()函数,不晓得为什么还会出现这样的问题。

 

后来我又仔细察看了log,发现在该exception之前又出现了NullPointerException, 而且发出该NullPointerException的地方是在cursor.close()之前,也就是说前一个exception导致程序退出,退出时发现cursor没关,于是又报了一个DatabaseObjectNotClosedException.

现在解决办法是在使用cursor的地方加了一个,try{}catch{}finally{}, 把cursor.close()放在finally里面最保险了。