2012-03-15 112 views
0

假設我們需要處理100個文件(一個接一個),並且如果我們在讀取其中一個文件時遇到異常,則進程應該保留該文件(並將內容放入日誌中)並開始處理下一個文件文件:文件處理異常

我想什麼:

for (File f: listOfFiles) { 
    try { 
     //implementation of processing each file 
    } catch (Exception e) { 
     //logging 
    } 
}​ 

,對嗎?

回答

3

是的,應該工作。但是,您也可能希望在捕獲異常時更具體。

+0

+1爲「是」,順便說一句你是什麼意思*更具體的捕捉異常*? – Rakesh 2012-03-15 05:40:28

+1

不要只看到「例外」一見鍾情。分析你的代碼可能拋出哪些異常,並按照正確的順序捕捉它們,並分別處理它們。 – 2012-03-15 05:52:44

+0

好!我正在尋找另一個角度..! – Rakesh 2012-03-15 06:10:20

1

是的!你是正確的,並在終止塊中放置一些代碼。我的意思是關閉任何流或關閉文件本身。類似於下面的僞代碼。

for(File f : listOfFiles){ 
    try{ 
     //implementation of processing each file 
    }catch(Exception e){ 
     logException(e); 
    }finally{ 
     //close stream or file. 
    } 
}