定義:程式執行過程**現的特殊情況。
異常出現的後果,導致程式中斷,造成不必要的損失。
throwable
1.throwable
雖然叫做可拋的但是這個是乙個類。不是介面。
它是所有錯誤和異常的父類,只有該類或者該類子類的物件才能被throw關鍵字丟擲。
常用的方法:getmessage();、getstacktrace();、printstacktrace();以及它的過載。
message只能通過構造器傳入。
2.error
嚴重的錯誤,不能捕獲必須避免。
出現的原因:jvm,硬體,執行邏輯錯誤(人為程式設計導致)。
3.exception
程式在執行和配置**現的問題。
主要分為,執行時異常(runtimeexception)和受查異常(checkedexception);
執行時異常,可以處理,可不處理。(編譯器不會報錯,所以不會強制要求處理)。
受查異常,必須處理。(不處理編譯器會一直報錯)
當用throw關鍵字丟擲乙個異常就會出現異常。
throw new 異常型別(「實際引數」);(實際引數就是前面提到的message)
比如:
throw
newexception()
;
一般而言分為兩類:
自動拋異常:當程式遇到不規範的**時,會丟擲異常。
手動丟擲異常,自己throw乙個異常類物件。
其實所謂的自動拋只是別人幫我們早就寫好了(就是他們定義了規範,寫好了判斷,一旦不符合就會throw乙個異常。)
如果jdk本身沒有幫我們處理異常,那最後就會變成error。
產生異常的結果:方法無條件結束,並把異常物件返回給呼叫者。
講到這裡應該知道什麼是throw了,但是可能還在想throws呢?
別急馬上講。
異常發生時,按照方法的呼叫鏈反向傳遞,如果始終都沒處理異常,就是說傳到main方法後也沒有處理異常,最終會交由jvm預設處理(列印堆疊跟蹤資訊printstacktrace())。
這裡提到的處理是真的處理異常,而不是使用throws拋給該方法的呼叫者。
所以:throws 用來宣告異常,修飾在方法宣告後面,引數列表前面。(這是一種消極的處理)
使用try…catch來處理異常
try
catch
(捕獲的異常物件)
如果try語句**現了 異常,並且是catch中的異常型別,那麼catch會捕獲異常,try語句中的**失效。執行catch語句中的**。
這樣就會出現乙個問題,如果我try中有必須要要執行的**怎麼辦?
於是就又加了乙個語句塊
try
catch
(捕獲的異常物件)
finally
幾個注意:
只要try中的出現的異常是catch中的異常型別或是其子類,catch都會捕獲。而且catch的執行是**的書寫順序。比如:
try
catch
(exception e)
catch
(arrayoutofbound***ception e)
這樣第二個catch語句就不會執行了,所以使用多個catch語句的時候,捕獲子類異常的catch語句要寫在,捕獲父類父類異常的catch語句的後面。
finally{}或者catch() {}都可以不寫,但是catch(){}和finally{}不能沒有try{}而單獨存在。
1.try + catch
2.try + catch + catch +...+ catch
3.try + catch + finally
4.try + catch + ... + catch + finally
5.try + finally
在實際開發中,jdk自帶的異常不能滿足我們的需求,我們就需要自定義異常。
自定義異常的要求:必須繼承exception或者exception的子類,同時自定義的異常類名要讓人知道這是乙個什麼異常。
ps:如果繼承runtimeexception那這個就是乙個編譯器不會識別提醒你要處理的異常,如果繼承exception或者exception的其他子類,那就是乙個受查異常,乙個必須要處理的異常。
如果父類方法有沒有宣告異常,那麼子類方法就不能用throws宣告異常,必須處理。
比如:wait()方法,在objcet類中方法沒有申明任何異常,所以wati()異常就必須處理。
如果父類方法宣告了異常,那麼子類方法宣告的異常型別就不能比父類方法宣告的異常更加寬泛。
Java 異常類學習總結
一 首先來看一下error和exception的區別 寫程式時難免會出現錯誤,有些錯誤可能是因為系統原因,記憶體等原因造成的,這類錯誤我們稱作error,我們並不希望它發生,所以應該盡量避免它 當然這屬於不可抗力 或者當出現這類錯誤的時候終止程式,error一般是非檢查性錯誤,編譯時可以通過。而另一...
Java 異常總結
1 乙個圖 error 程式不可解決 exception 分兩種,一為必須進行處理的,一為可以不進行處理的,為runtimeexception.2 五個關鍵字 try catch finally throw throws 3 先捕捉小的,再捕捉大的異常 正確 trycatch filenotfoun...
缺頁異常總結
產生頁面異常的原因 1 目標頁面不存在 頁表項全0,即該線性位址與實體地址尚未建立對映或者已經撤銷 2 相應的物理頁面不在記憶體中 頁表項非空,但p標誌 0,比如在swap分割槽或磁碟檔案上 3 訪問許可權不符合 此時頁表項p標誌 1,比如企圖寫唯讀頁面 當出現上面情況之一,那麼就會產生頁面page...