java 異常,java,異常

1.異常:

 a概念.程序運行過程中出現的非正常情況。

 b異常處理的必要性:所有的程序都存在一些未知的問題或是錯誤,如果這些問題不進行處理,可能會給用戶造成一定的損失。

 c.異常處理:程序中一旦有異常發生,則會執行提前準備好的一段代碼,減少損失,不會中斷程序。

2.分類
所有異常的父類:Throwable 位於java.lang包下
       常用的方法有public string getMessage(); 返回String類型的異常信息
                            public void printStackTrace();打印跟蹤方法調用棧中異常處理信息
(1).Throwable有兩個子類:Error和Exception

    Error :僅靠程序無法恢復的嚴重錯誤,例如:內存不足,(java虛擬機調用方法時)棧溢出
              大多數的Error錯誤是程序無法處理的。
    Exception:有分爲兩個子類 RuntimeException和非RuntimeException
a.RuntimeException(運行時異常,未檢查異常);它的本類加所有子類都是運行時異常
             特點:java編輯器編譯時不是檢測此類異常,在運行時報錯

             常見的運行時異常有:

              下標越界異常:java.lang.ArrayIndexOutOfBoundException;

               類型轉換異常:java.lang.classCastException.

               空指針異常:java.lang.NullPointerException  (null.+屬性/方法引起的)

數字格式轉換異常: java.lang.NumberFormalException  (string->int/interger時要求的純數字)

           

                            

        b.非RuntimeException(非運行時異常,及已檢查異常)

          和RuntimeException沒有繼承關係的異常類,稱爲非運行時異常

           特點:java編輯器在編譯時報錯,出現這類異常時編譯不通過根本到不了運行這一步,比需處理


3.異常的產生

(1)自動產生異常;程序在運行的過程中,遇到錯誤的代碼,程序自動產生異常,程序因此而終止。

                            

  (2)手動產生異常

       語法:throw new 異常類名(“實參”);

        要求;比需寫在方法內

         作用;等價於return ,導致程序的終止

          int i=1;

          if(i==1){

            throw new RuntimeException(e);      

           }

 4.傳遞;異常的傳遞按方法的調用鏈,相反的方向進行傳遞,直到傳給JVM虛擬機,導致程序終止。

5.異常的處理

   1.消極處理 throws(聲明的異常) 定義方法聲明的後面

       .返回值類型 方法名 (形參列表)throws 異常類名,異常類名1{}

        .結果:使用消極異常處理只是把異常消極傳遞,推卸責任,最終程序無法運行終止,唯一的優勢:可以使非運                行      是異常編譯通過。

   2.積極處理異常:

      語法:try{}

                catch(){}

       注意:

             try後邊可以跟多個catch塊,一旦有異常產生會從第一個catch塊,依次匹配

             catch可以利用多態使用父類型處理異常:本類型+所有子類型異常

            父類的catch塊必須定義在其子類的catch塊後邊

             catch只能捕獲try中可能出現的非運行時異常

             catch中可以捕獲任意的運行時異常(不管try中是否具有出現的可能性)

             積極處理異常的同時可以採用消極處理異常

   finally:不管有沒有異常的產生,一定被執行

          try{}catch(){} finally{一定被執行的}

           因此finally中的語句,不管有沒有異常的產生,一定執行

                 所以在finally 中一般不寫return 語句

6.自定義異常

      (1)自定義異常類需要繼承Exception類或者是Exception的子類,如過自定義異常類想成爲運行時異常,需要繼承RuntimeException或是RuntimeException 的子類

      (2)提供兩個構造方法

              無參構造方法

              提供帶有String 參數的構造方法 ,利用super(message)傳遞參數。

     

         

 

                       


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章