2013-04-03 41 views
2

我使用的是Lombok's @Cleanup,即使當我發現它非常有用時,我也無法弄清楚如何捕獲由使用資源的主要代碼塊引發的異常。如何在使用龍目島的@Cleanup時捕捉異常?

我的代碼如下:

ScriptRunner runner = null; 
try { 
    runner = scriptRunner(); 

    for (Resource sqlFile : sqlScripts) { 
     runScript(sqlFile.getFile(), runner); 
    } 
} catch (Exception ex) { 
    log.error("Error found when attempting to run script", ex); 
} finally { 
    if (runner != null) { 
     runner.closeConnection(); 
    } 
} 

隨着龍目島,我可以簡化代碼這樣上面:

@Cleanup("closeConnection") ScriptRunner runner = scriptRunner(); 

for (Resource sqlFile : sqlScripts) { 
    runScript(sqlFile.getFile(), runner); 
} 

但我會錯過捕捉可能出現的任何異常的可能性當for循環執行時。有沒有什麼辦法可以和龍目島一起優雅地做到這一點? (即不是編程方式使用「try/catch語句?等)

非常感謝提前。

回答

2

號。如果你要處理,你需要抓住它的異常,併爲你需要一試-catch塊

披露:。?我的Project Lombok開發商之一

+1

在什麼地方try-catch塊需要去整個塊周圍從@Cleanup註釋範圍的結束或者一個更有限的範圍? –

+0

我會用盡可能小的範圍。 –

+0

我相信Lombok會添加一個try {..無論如何,我們的結論是,在這種情況下,使用Lombok更加簡潔,因爲兩個選項的詳細程度幾乎相同。感謝Roel的回答。 –