2012-11-02 86 views
3

我只是想知道Java VM如何使用Try-Catch。它如何執行它?Java Try-Catch - 它如何執行?

我最好的猜測是,它就像一個Linux系統,當安裝某些東西時,測試運行,如果沒有發現錯誤,詢問用戶他/她是否想繼續。在Try-Catch的情況下,它是否執行測試運行,如果一切正常,那麼執行它?

+0

感謝所有,但我更期待在機器內部發生什麼,如果有人知道!只是爲了額外無用的信息! – user1360809

回答

4

它比這更簡單 - 如果包含在try子句中的任何子句產生錯誤,則將執行catch子句中的代碼(對應於該錯誤 - 您可以具有多次catch)。沒有辦法事先知道特定的子句是否會失敗,只有在錯誤發生後才嘗試恢復。

如果您有10個子句,而最後一個引發錯誤,則前9個執行的修改將不會「恢復」!

+0

這對事先不知道並試圖恢復有意義,也許我問的是錯誤的問題? – user1360809

+0

這個問題是一個很好的問題,我希望答案給了你一些信息,讓你進一步調查。try-catch機制並不是Java專有的,但通常是從C++到JavaScript到VB的最常見主流語言的一部分.NET和C# – thedayofcondor

4
try 
{ 
//execute your code 
}catch(Exception e) 
{ 
//Log message 
//IF you don't want to continue with the logic inside method, rethrow here. 
}finally{ 
//Ir-respective of what the status is in above cases, execute this code. 
} 
//Continue with other logic in the method 

。如果您想要確定部分代碼需要執行(或)而不是異常情況,這非常有用。

要了解更多關於try-catch如何在java中工作,請閱讀tutorial

+1

最後添加關閉您的資源。 :) – PermGenError

+0

我會說'Eceptional Conditions'而不是'Error conditions' :) – PermGenError

+0

@ chaitanya10:用你的通信更新了答案。 – kosa

1

可以給程序無法處理的一些意想不到的結果的代碼保存在try塊中,並處理/捕獲程序的意外崩潰,我們使用catch塊。在我們聲明異常類型的代碼可以拋出

如:

int a; 
try { 
    a=1/0;//program wil crash here 
}catch(Exception e){ 
    System.out.println("Division by zero ");//handling the crash here 
} 
0

它開始正常執行,W/O任何檢查。如果發生任何異常,它將跳出子句(如循環中的break),並立即執行catch,如果沒有發現異常,它將跳過catch子句。

finally子句確保無論是否拋出異常都會調用它。一個實際的例子是從文件或網絡讀取數據,並關閉流,無論是否拋出異常。