error和exception的區別和關係

2021-08-18 06:56:58 字數 1518 閱讀 7179

error和runtimeexception及其子類稱為未檢查異常(unchecked exception),其它異常成為受檢查異常(checked exception)。

exception類表示程式可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程式恢復執行,而不應該隨意終止異常。

受檢查的異常(ioexception等):這類異常如果沒有try……catch也沒有throws丟擲,編譯是通不過的。這類異常一般是外部錯誤,例如檔案找不到、試圖從檔案尾後讀取資料等,這並不是程式本身的錯誤,而是在應用環境中出現的外部錯誤。

2、當try和catch中有return語句時,finally塊仍然會執行;

3、finally是在return後面的表示式運算後執行的,所以函式返回值是在finally執行前確定的。無論finally中的**怎麼樣,返回的值都不會改變,仍然是之前return語句中儲存的值;

4、finally中最好不要包含return,否則程式會提前退出,返回值不是try或catch中儲存的返回值。

情況2:trycatch(){} finally{} return; 

程式執行try塊中return之前(包括return語句中的表示式運算)**; 

再執行finally塊,最後執行try中return; 

finally塊後面的return語句不再執行。

情況3:try catch() finally{} return; 

程式先執行try,如果遇到異常執行catch塊, 

有異常: 

則執行catch中return之前(包括return語句中的表示式運算)**,再執行finally語句中全部**, 

最後執行catch塊中return. finally塊後面的return語句不再執行。 

無異常: 

執行完try再finally再執行最後的return語句.

情況4:trycatch(){} finally 

程式執行try塊中return之前(包括return語句中的表示式運算)**; 

再執行finally塊,因為finally塊中有return所以提前退出。

情況5:try{} catch()finally 

程式執行catch塊中return之前(包括return語句中的表示式運算)**; 

再執行finally塊,因為finally塊中有return所以提前退出。

情況6:trycatch() finally 

程式執行try塊中return之前(包括return語句中的表示式運算)**; 

有異常:執行catch塊中return之前(包括return語句中的表示式運算)**; 

則再執行finally塊,因為finally塊中有return所以提前退出。 

無異常:則再執行finally塊,因為finally塊中有return所以提前退出。

public class finallytest  

static int test()

finally

}}

Java中Exception和Error的區別

error類和exception類的父類都是throwable類,他們的區別是 error類一般是指與虛擬機器相關的問題,如系統崩潰,虛擬機器錯誤,記憶體空間不足,方法呼叫棧溢等。對於這類錯誤的導致的應用程式中斷,僅靠程式本身無法恢復和和預防,遇到這樣的錯誤,建議讓程式終止。exception類表示...

Error和Exception的區別

首先,error類和exception類都是繼承throwable類 error 錯誤 是系統中的錯誤,程式設計師是不能改變的和處理的,是在程式編譯時出現的錯誤,只能通過修改程式才能修正。一般是指與虛擬機器相關的問題,如系統崩潰,虛擬機器錯誤,記憶體空間不足,方法呼叫棧溢等。對於這類錯誤的導致的應用...

error和exception的區別?

error一般指虛擬機器錯誤,系統崩潰,記憶體溢位等,這種錯誤靠程式本身無法預防和恢復。exception是指程式可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程式恢復執行,而不應該隨意終止異常。主要有 runtimeexception執行時異常 nullpointerex...