標籤:
一、異常的定義
異常是因編程錯誤或外在因素導致程式在運行期無法啟動並執行事件。(它會打斷指令的正常秩序流程)
二、異常的分類
1.Error
動態連結錯誤,比如JVM系統內部錯誤或資源耗盡,這一類例外狀況事件無法恢複或不可能捕獲,將導致應用程式中斷。
2.Exception
其他因編程錯誤或偶然的外在因素導致的一般性問題,這類異常得到恰當處理時,程式有機會恢複至正常運行狀態
①非受檢(uncheched)異常
就是程式運行時出現的錯誤,這種錯誤是認為造成的,比如1/0,null 指標異常等
錯誤類型轉換:java.lang.ClassCastException
數組下標越界:java.langArraylndexOutOfBoundsExcetion
null 指標訪問:java.lang.NullPointerException
算術異常(除0溢出):java.java.ArithmeticException
②受檢時異常(cheched)
沒有找到指定名稱的類: java.lang.ClassNotFoundException
訪問不存在的檔案:java.io.FileNotFoundException
操作檔案時發生的異常:java.io.IOEception
操作資料庫時發生的異常:java.sql.SQLException
是在編寫代碼時報出的錯誤,這種錯誤需要程式員及時處理,
比如:檔案未找到異常
三、常見異常和Exception的階層
}RuntimeException
?ArithmeticException:數學計算異常
?NullPointerException:null 指標異常
?NegativeArraySizeException:負數組長度異常
?ArrayIndexOutOfBoundsException:數組索引越界異常
?ClassNotFoundException:類檔案未找到異常
?ClassCastException:造型異常
}IOException
?FileNotFoundException:檔案未找到異常
?EOFException:讀寫檔案尾異常
?MalformedURLException:URL格式錯誤異常
?SocketException:Socket異常
?IOException
Throwable
/ \
Error Exception
稱為錯誤,虛擬機器產生並拋出,不處理 / \
一般性異常 RuntimeException
Exception在程式中是必須進行處理
RuntimeException可以不使用try…catch進行處
理,但是如果有異常產生,則異常將由JVM進行處
理。
四、異常處理機制
執行代碼時如果出現異常,會自動產生一個異常類對象,該異常對象將被自動認可到JVM,(這個過程稱為拋出異常)→JVM尋找是否有能處理這一異常的代碼異常→找到則交給其處理,(這一過程稱之為catch異常和處理異常);如果無法處理,則程式退出
五、捕獲異常
try{...}catch{...}【finally{...}】
1.try塊
①捕獲多個異常可以使用1個try塊
②try塊內可以放有異常代碼,還可以放無異常代碼
2.catch塊
①1個catch塊只能捕獲一種異常,當出現多個異常時,可以使用多個catch塊進行捕獲
②catch塊裡出現的異常對象的方法
a.getMessage():列印該異常對象的資訊
b.printStackTrace():列印錯誤資訊,建議使用
③如果沒有異常,則不走catch塊
④catch塊內異常類順序,子類→父類依次往下
3.finally
①無論該段代碼有沒有錯誤,都去執行finally塊
②作用:進行資源清理工作
③finally塊可有可無
一、throws關鍵字
用throws關鍵字聲明方法,表面該方法不處理異常,而交給方法的調用者處理
1.作用:拋出異常,不做處理
2.聲明:位於方法名後
比如:public void method() throws Exception{...}
二、throw和throws
不同點 |
throw |
throws |
位置 |
方法內部 |
方法名後 |
作用 |
拋出異常對象 |
拋出異常類 |
1.throw使用注意:
當拋出一個受檢異常對象時,需要通過throws先拋出該異常
2.throws使用注意:
①當一個方法拋出異常,則調用該方法的對象需要處理這個異常(誰調用誰處理)
②重寫一個方法時。它所成麼的異常範圍不能被擴大。
一、建立自訂異常類
1.建立一個類,繼承Exception
2.複寫Exception類的方法
二、使用自訂異常類
同Exception
Java基礎------異常的簡易資料