Java異常處理
回答
for(File f : files){
try {
process(f); // may throw various exceptions
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
你不得不使用的try/catch /終於集團。
try{
//Sensitive code
} catch(ExceptionType e){
//Handle exceptions of type ExceptionType or its subclasses
} finally {
//Code ALWAYS executed
}
try
將讓你執行敏感代碼可能拋出異常。catch
將處理特定異常(或此異常的任何子類型)。finally
將幫助執行語句,即使拋出異常並且未捕捉到異常。
在你的情況
for(File f : getFiles()){
//You might want to open a file and read it
InputStream fis;
//You might want to write into a file
OutputStream fos;
try{
handleFile(f);
fis = new FileInputStream(f);
fos = new FileOutputStream(f);
} catch(IOException e){
//Handle exceptions due to bad IO
} finally {
//In fact you should do a try/catch for each close operation.
//It was just too verbose to be put here.
try{
//If you handle streams, don't forget to close them.
fis.close();
fos.close();
}catch(IOException e){
//Handle the fact that close didn't work well.
}
}
}
資源:
我知道這一點。 問題:1.我的應用程序處理多個文件。 (例外) 3.但現在我的應用程序退出任何1個文件失敗。 4.我想我的應用程序繼續執行其他文件。那麼我應該如何構建我的異常處理? – Magggi 2010-09-02 09:22:46
你應該把你所有的異常處理放在循環中。 – 2010-09-02 09:30:22
只是抓住了它可能拋出的異想天開而無所作爲;像人們說的那樣吃它:) 但是至少要登錄它!
非常簡潔例如:
try {
your code...
} catch (Exception e) {
log here
}
我猜你的新的編程爲execeptions是一個相當fundermental概念,問題可能發生在你的控制,你需要處理它。
基本前提是try catch塊。
try
{
//Your code here that causes problems
}
catch(exception ex)
{
//Your code to handle the exception
}
您'嘗試'您的代碼,並且如果引發異常,您'捕捉'它。並做你需要的。 此外還有一個catch塊,您可以在其下面添加{}。基本上,即使沒有引發異常,最終的代碼仍然運行。您可能想知道這一點,但它經常用於流/文件處理等來關閉流。
瞭解更多關於Java異常在這裏由Sun(現在是Oracle)編寫的教程 - http://download.oracle.com/javase/tutorial/essential/exceptions/
try
{
//Your code here that causes problems
}
catch(exception ex)
{
//Your code to handle the exception
}
finally
{
//Always do this, i.e. try to read a file, catch any errors, always close the file
}
你可能會問是怎麼做的,你捕獲不同的例外,即它是一個空引用,是它的問題除以零,找不到文件或文件不可寫入等。爲此,您可以在try下編寫幾個不同的catch塊,基本上每種類型的異常都有一個catch,使用「exception」基本上就是catch all語句,就像在if語句堆棧中一樣,如果「exception」是第一個catch阻止它會捕獲所有內容,所以如果你有幾個catch塊,確保異常是最後一個。
同樣,這是一個有用但很大的話題,所以你需要閱讀它。
由於你正在做多個文件,你需要基本上做一個循環,並在循環內包含try/catch塊。
所以即使一個文件失敗了,你也可以抓住它,但是繼續運行,代碼將會不受阻礙地循環到下一個文件。
通常,我會這樣做。
ArrayList<Entry> allEntries = getAllEntries();
for(Entry eachEntry:allEntries){
try{
//do all your processing for eachEntry
} catch(Exception e{
ignoredEntries.add(eachEntry);
//if concerned, you can store even the specific problem.
} finally{
//In case of resource release
}
}
if(ignoredEntries.size() > 0){
//Handle this scenario, may be display the error to the user
}
FileSystemException
可能是您正在尋找的特定異常。
雖然,對初學者更好的主意是捕捉異常,並使用
System.out.println(e);
其中e
是捕捉到的異常打印。
- 1. Java異常處理?
- 2. Java異常處理
- 3. Java異常處理
- 4. java異常處理
- 5. Java異常處理
- 6. Java異常處理
- 7. 處理Java異常
- 8. 處理java異常
- 9. Java異常處理
- 10. Java的異常處理NullPointerException異常
- 11. Infinity的Java異常處理
- 12. 核心-java異常處理
- 13. Java異常處理方法
- 14. Java:異常處理程序
- 15. Java GUI Jframe異常處理
- 16. Java異常處理概念
- 17. Java異常處理機制
- 18. Java EE/Struts異常處理
- 19. Java中的異常處理
- 20. Java異常處理:/ zeo
- 21. Java SpringBoot異常處理
- 22. java處理字符異常
- 23. Java中的異常處理
- 24. Java異常處理查詢
- 25. Java文件異常處理
- 26. Java異常處理策略
- 27. Java嵌套異常處理
- 28. Java異常處理finally塊
- 29. 異常處理:多次處理異常
- 30. Java異常處理理解問題
非常感謝您的回答。 – Magggi 2010-09-02 17:51:40