歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java異常分類及針對性處理方式

異常的分類

1、 編譯時被檢測異常:只要是Exception和其子類都是,除了特殊子類RuntimeException體系。

        此類異常在處理時必須進行聲明或進行捕捉         這種問題一旦出現,希望在編譯時就進行檢測,讓這種問題有對應的處理方式。         這樣的問題,都可以針對性的處理。    
2、編譯時不檢測異常(運行時異常):就是Exception中的RuntimeException體系和其子類。           此類異常可以在代碼中不進行處理            這種問題的發生,無法讓功能繼續,運算無法進行,更多是因為調用者的原因導致的或者引發的內部狀態的改變導致的。那麼這種問題一般不處理,直接編譯通過,在運行時讓調用時的程序強制停止,讓調用者對代碼進行修正。 所以,自定義異常的時候,要麼繼承Exception ,要麼繼承RuntimeException   throws  和 throw 的區別 1、throws 使用在函數上。       throw 使用在函數內。 2、throws拋出的是異常類,可以拋出多個,用逗號隔開。      throw拋出的是異常對象,只能拋出一個。   異常處理的捕捉形式 這是可以對異常進行針對性處理的方式。 具體格式是: try{      需要被檢測異常的代碼 } catch(異常類 變量) {    該變量用於接收發生的異常對象         真正處理該異常的代碼 } finally{   //通常用於關閉、釋放資源。       一定會被執行的代碼 } 只有當使用System.exit(0)來進行顯示調用退出jvm函數的時候,finally代碼才不會被執行   當程序能夠進行處理的時候就使用try   catch 當程序處理不了的時候就使用throw ,拋給調用者   常用方法: getMessage() 對象本身e,即e.toString() 默認調用此方法 printStackTrace()   這個方法為jvm的默認異常處理機制     當一個try對應多個catch的時候,對應異常的子類放在上邊,父類放在下邊。     異常處理的原則 1,函數內部如果拋出需要檢測的異常,那麼函數上必須要生命。      否則必須在函數內用try catch捕捉,否則編譯失敗。 2,如果調用到了聲明異常的函數,要麼try catch 要麼throws,否則編譯失敗。 3,什麼時候try catch,什麼時候throws         功能內部可以解決的用catch         解決不了,用throws告訴調用者,由調用者解決。 4,一個功能如果拋出了多個異常,那麼調用時,必須有對應的多個catch進行針對性的處理。         內部有幾個需要檢測的異常,就拋幾個異常。拋出幾個就catch幾個,不要多也不要少。   try catch finally 代碼塊組合特點: 1,try catch finally           完整組合 2,try catch(多個), 當沒有必要資源需要釋放時,可以不用定義finally   3,try finally  沒有catch,此時對異常的處理應為throws ,聲明拋出。         異常無法直接catch處理,但是資源需要關閉。     異常的注意事項: 1,子類在覆蓋父類方法時,父類的方法如果拋出了異常,那麼子類的方法只能拋出父類的異常或者該異常的子類。 例: class A extends Exception {} class B extends A {} class C extends Exception {}   class Fu {     void show() throws A {} } class Zi extends Fu { void show() 可以throws A  或者throws B  也可以不拋,try 上,但是不能拋出C }   2,如果父類異常拋出多個異常,那麼子類只能拋出父類異常的子集         子類覆蓋父類,只能拋出父類的異常或者子類或者子集     注意:如果父類的方法沒有拋出異常,那麼子類覆蓋時絕對不能拋出異常,只能try 例: interfate Inter{  void function(); } class D implements Inter  {      public void function();//throws Exception 這裡是不可以拋出異常的 {} }

 

通過Java程序抽取日志中的sql語句  http://www.linuxidc.com/Linux/2015-01/111347.htm

解密Java增強的泛型 http://www.linuxidc.com/Linux/2015-01/111360.htm

Java中介者設計模式 http://www.linuxidc.com/Linux/2014-07/104319.htm

Java 設計模式之模板方法開發中應用 http://www.linuxidc.com/Linux/2014-07/104318.htm

設計模式之 Java 中的單例模式(Singleton) http://www.linuxidc.com/Linux/2014-06/103542.htm

Java對象序列化 http://www.linuxidc.com/Linux/2014-10/107584.htm

大話設計模式(帶目錄完整版) PDF+源代碼 http://www.linuxidc.com/Linux/2014-08/105152.htm

Java中的函數傳遞 http://www.linuxidc.com/Linux/2014-11/109056.htm

Copyright © Linux教程網 All Rights Reserved