java异常基本知识
Throwable
??? ?|--Error
??? ?|--Exception
??? ??? ?|--RuntimeException
?? ??? ?
?? ??? ?
異常體系的特點:異常體系中的所有類以及建立的對象都具備可拋性;
?? ??? ??? ??? ?也就是說可以被throw和throws關鍵字多操作。
?? ??? ??? ??? ?只有異常體系具備這個特點
?? ??? ??? ??? ?
throw和throws的用法;
?? ?throw定義在函數內,用于拋出異常對象
?? ?throws定義在函數上,用于拋出異常類,可以拋出多個用逗號隔開。
當函數內容有throw拋出異常對象,并未進行try處理。必須要在函數上聲明,都在編譯失敗
注意:RuntimeException除外。也就說,函數內如果拋出的RuntimeException異常,函數上可以不聲明。
如果函數聲明了異常,調用者需要進行處理。處理方法可以throws可以try。
異常有兩種:
?? ?編譯時被檢測異常
?? ??? ?該異常在編譯時,如果沒有處理(沒有拋出也沒有try),編譯失敗。
?? ??? ?該異常被標識,代表這可以被處理。
?? ?運行時異常(編譯時不檢測)
?? ??? ?在編譯時,不需要處理,編譯器不檢查。
?? ??? ?該異常的發生,建議不處理,讓程序停止。需要對代碼進行修正。
異常處理的語句:
try{
?? ?需要被檢查的代碼
}
catch{
?? ?處理異常的代碼
}
final{
?? ?一定會執行的代碼
}
有三種結合格式:
try{}catch{}
try{}catch{}finally{}
try{}finally{}
注意:
?? ?1.finally中定義的通常是 關閉資源代碼。因為資源代碼必須釋放
?? ?2.finally只有一種情況不會執行,當執行到System.exit(0);finally不會被執行
?? ?
自定義異常:
?? ?定義類繼承Exception或者RuntimeException
?? ?1.為了讓該自定義類具備可拋性。
?? ?2.讓該類具備澳洲異常的共性方法。
?? ?
?? ?當要定義自定義異常的信息時,可以使用父類已經定義好的功能。
?? ?異常異常信息傳遞給父類的構造函數。
?? ?class MyException extends Exception{
?? ??? ?MyException(String mssage){
?? ??? ??? ?super(mssage);
?? ??? ?}
?? ?}
自定義異常:按照Java的面向對象思想,將程序中出現的特有問題進行封裝。
異常的好處:
?? ?1.將問題進行封裝
?? ?2.將正常流程代碼和問題處理代碼相分離,方便于閱讀。
異常的處理原則:
?? ?1.處理方式有兩種:try或者throws。
?? ?2.調用到拋出異常的功能時,拋出幾個,就處理幾個。
?? ??? ?一個try對應多個catch。
?? ?3.多個catch,父類的catch放到最下面。
?? ?4.catch內,需要定義針對性的處理方式,不要簡單的定義printStackTrace,輸出語句
?? ??? ?也不要不寫。
?? ??? ?當捕獲到的異常,本功能處理不了時。可以繼續在catch中拋出。
?? ??? ?try{
?? ??? ??? ?throw new AException();
?? ??? ?}catch(AException e){
?? ??? ??? ?throw e;
?? ??? ?}
?? ??? ?
?? ??? ?如果該異常處理不了,但不屬于該功能出現的異常。
?? ??? ?可以將異常轉換后,在拋出和該功能相關的異常。
?? ??? ?
?? ??? ?或者異常可以處理,當需要將異常產生的和本功能相關的問題提供出去,
?? ??? ?當調用者知道。并不處理。也可以將捕獲異常處理后,轉換新的異常。
?? ??? ?try{
?? ??? ??? ?throw new AException();
?? ??? ?}catch(AException e){
?? ??? ??? ?//對AException處理
?? ??? ??? ?throw new BException();
?? ??? ?}
?? ?
異常的注意事項:
?? ?在子父類覆蓋時:
?? ?1.子類拋出的異常必須是父類的異常的子類或者子集
?? ?2.如果父類或者接口沒有異常拋出時,子類覆蓋出現異常,只能try不能拋。
?
轉載于:https://www.cnblogs.com/tongxuping/p/6832558.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java异常基本知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinForm下的键盘事件(KeyPre
- 下一篇: C#使用ICSharpCode.Shar