異常,自定義異常,一個簡單明瞭的理解過程

        在之前的學習中我們學過IO流,在IO流中使用字符緩衝流(BufferedReader bf =newBufferedReader(new FileReader("abc.txt"));)的時候除了需要導包意外,還需要進行拋異常:import java.io.IOException;

        那麼這個異常是什麼,爲什麼要拋異常,拋異常能解決什麼問題呢,今天的學習以後,讓我對異常的用處有了瞭解.      

         在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象並拋出了一個異常對象。Java處理異常的方式是中斷處理。

        異常的根類是Throwable,其下有兩個子類:Error與Exception,平常所說的異常指Exception.

1,嚴重錯誤Error,無法通過處理的錯誤

2,編譯時異常Exception,編譯時無法編譯通過。如日期格式化異常

3,運行時異常RuntimeException,是Exception的子類,運行時可能會報錯,可以不處理。如數學異常

        在異常中主要想介紹一下自定義異常,因爲在工作中會經常需要自定義異常來爲其他同事使用.也可以更加精確的對所使用的異常進行詳細的描述.

        由於許多異常在JDK中是直接可以進行拋出使用的,但是有很多實際與生活中相關的異常都需要我們自定義異常類,那麼java語言也爲我們提供了自定義異常的功能.  

        通過閱讀異常源代碼:發現java中所有的異常類,都是繼承Throwable,或者繼承Throwable的子類。這樣該異常纔可以被throw拋出。說明這個異常體系具備一個特有的特性:可拋性:即可以被throw關鍵字操作。並且查閱異常子類源碼,發現每個異常中都調用了父類的構造方法,把異常描述信息傳遞給了父類,讓父類幫我們進行異常信息的封裝。

       那麼我們就通過一道例題來進行簡單的定義一個自己的異常,也就是自定義異常.

       請用代碼實現如下需求:

1,寫一個方法實現獲取字符串某個索引上的字符的功能

2,寫一個測試測試方法調用上面寫的方法,使用thows方式進行處理異常,並在main方法中調用這個測試方法

3,再寫一個測試測試方法調用上面寫的方法,使用try...catch方式進行處理異常,並在main方法中調用這個測試方法

     

publicclass Test {

//   1. 獲取字符串某個索引上的字符的功能

      publicstaticchar charAt(String str, intindex) throws Exception {

//               當字符串爲null拋出Exception("字符串不能爲null")異常,

           if(null == str){

                 thrownew Exception("字符串不能爲null");

           }

//               當字符串爲""的時候拋出 Excetion("字符串不能爲空")異常;

           if(str.equals("")){

                 thrownew Exception("字符串不能爲空");

           }

//               index不在[0,str.length()-1] 之間的時,拋出Exception("索引越界") 異常.

           if(index < 0 || index >= str.length()){

                 thrownew Exception("索引越界"+index);

           }

//               否則返回strindex索引的字符

           returnstr.charAt(index);

      }

//   4.提供一個靜態的方法testThrows() 用於測試charAt(String,intindex)方法

      publicstaticvoid testThrows() throws Exception{

             charc;

//          c = charAt(null, 0);

//          c = charAt("", 0);

//          c = charAt("abc",4);

             c= charAt("abc",1);

             System.out.println(c);

      }

     

//   5.提供一個靜態方法testTryCatch(),用於測試charAt(String,intindex)方法

      publicstaticvoid testTryCatch(){

//         在方法中調用charAt(String,int index)方法;

//              i.注意需要測試每一種情況

//         使用try...catch方式對異常進行處理

           try{

             charc;

//          c = charAt(null, 0);

//          c = charAt("", 0);

//          c = charAt("abc",4);

             c= charAt("abc",1);

             System.out.println(c);

           }catch(Exceptione){

                 System.out.println("捕獲異常");

                 e.printStackTrace();

           }

           System.out.println("程序繼續");

      }

      publicstaticvoid main(String[] args) {

//         main方法中,調用testThrows 方法.

//         testThrows();

//         main方法中,調用testTryCatch方法

            testTryCatch();

      }   

}

       在例題中呢,我們在寫完publicstaticchar charAt(String str, intindex){}系統會提示錯誤信息,這時候不要在意,

當我們定義好了異常,並且拋出異常的時候,這個錯誤信息就會去掉,強迫症的人別害怕,哈哈.

      附一張經常用到的異常繼承關係圖






       

發佈了56 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章