[問題] 關於try-with-resource
最近用cursor注意到java有try-with-resource可用
看起來類似以前用過C#的using,在statement結束時會自動close resource
程式碼寫起來類似
try(Cursor cursor = getContentResolver().query(xxxx)) {
// do something
} catch (Exception ex) {
// handle exception
}
我的問題是cursor真的會保證close嗎?
程式執行的順序應該會是
cursor.close() -> catch
假如cursor發生exception的話
也能在這個catch中hook到嗎?
萬一沒有的話, 是不是就memory leak了?
以前的寫法好像也差不多,還保證exception都撈的到
Cusor cursor = null;
try {
cursor = getContentResolver().query(xxxx);
} catch(Exception ex) {
// handle exception
} finally {
try {
if(cursor != null && !cursor.isClose()) {
cursor.close();
}
} catch(Exception ex) {
//handle exception
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.126.161
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1529506055.A.F1A.html
推
06/20 23:39,
6年前
, 1F
06/20 23:39, 1F
→
06/21 20:01,
6年前
, 2F
06/21 20:01, 2F
→
06/21 22:02,
6年前
, 3F
06/21 22:02, 3F
→
06/21 22:05,
6年前
, 4F
06/21 22:05, 4F
→
06/21 22:05,
6年前
, 5F
06/21 22:05, 5F
→
06/21 22:06,
6年前
, 6F
06/21 22:06, 6F
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章