java基礎3(異常)

1.異常的體系java

1)請描述異常的繼承體系程序員

異常繼承體系爲:異常的根類是 java.lang.Throwable,其下有兩個子類:java.lang.Error 與 java.util.Exception 。而Exception又分爲編譯時期異常:checked異常,與運行時期異常:runtime異常。 數組

2)請描述你對錯誤(Error)的理解函數

Error:表示不可修復的惡性的錯誤,只能經過修改代碼規避錯誤的產生,一般是系統級別的,因此很嚴重。spa

3)請描述你對異常(Expection的理解)指針

Exception:表示可修復的良性(相對於錯誤)的異常,異常產生後程序員能夠而且應該經過代碼的方式糾正,使程序繼續運行,是必需要處理的。orm

4)請描述你對運行時異常(RuntimeException)的理解對象

運行時期異常:runtime異常。在運行時期,檢查異常.在編譯時期,運行異常不會編譯器檢測(不報錯)。繼承

2.throw與throws的區別索引

問題:

1. 請描述throw的使用位置,做用是什麼?

2. 請描述throws的使用位置,做用是什麼?

答:

  1. throw關鍵字一般用在方法體中,而且拋出一個異常對象。程序在執行到throw語句時當即中止,它後面的語句都不執行。
  2. throws關鍵字一般被應用在聲明方法時,用來指定可能拋出的異常。多個異常可使用逗號隔開。當在主函數中調用該方法時,若是發生異常,就會將異常對象拋給方法調用處

3.異常的處理方式

問題:

      1. 異常處理方式有幾種,分別是什麼?

      2. 詳細闡述每種方式對異常是如何處理的

答:

  1. 異常的處理方式有兩種,分別是使用throws和try...catch...finally
  2. throws用在方法的聲明上後接異常類名,是把異常拋給調用者進行處理
  3. try...catch...finally是捕獲異常,本身處理,處理完畢後面的程序能夠繼續運行

a)       try代碼塊中是可能出現異常的代碼

b)       catch代碼塊,是遇到異常,對異常進行處理的代碼

c)        finally代碼塊是不管是否發生異常,都必須執行的代碼,用於釋放資源.

4.請列舉常見異常,並說明產生緣由

NullPointerException:空指針異常。

         當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度等等。

ArrayIndexOutOfBoundsException:數組索引越界異常。

當對數組的索引值爲負數或大於等於數組大小時拋出此異常。

ArithmeticException:算術運算異常。

         程序中出現了除以零這樣的運算就會出這樣的異常,對這種異常,你們就要好好檢查一下本身程序中涉及到數學運算的地方,公式是否是有不妥了。

NumberFormatException:數字格式異常。

         當試圖將一個String轉換爲指定的數字類型,而該字符串確不知足數字類型要求的格式時,拋出該異常。

5.根據給出的相應代碼,分析可能產生的結果。

1).舉例:
public static void main(String[]args){

 String str=null;
System.out.println(str.length());

}

答:變量str的值爲null,調用方法時,報空指針異常NullPointerException



2).舉例:
public static void main(String[]args){
int arr[]={1,2};
System.out.println(arr[2]);
}

答:索引值2大於等於數組arr的長度時,報數組索引越界異常ArrayIndexOutOfBoundsException



3).舉例:
public static void main(String[]args){

System.out.println(1/0);
}


答:整數0作了分母,報算術運算異常ArithmeticException:/by zero



4).舉例:
public static void main(String[]args){

System.out.println(Integer.parseInt("itcast"));

}

答:

把字符串「itcast」轉換爲Integer類型時,固然會報數字格式化異常啦NumberFormatException

5)舉例:
public static void main(String[] args) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
   
    try {
        Date date = format.parse("2018-04-03");
        System.out.println("
程序正常");
       
    } catch (ParseException e) {
        System.out.println("
程序異常");
    }
}

答:

    打印結果「程序正常」.try代碼塊中並無產生異常,catch代碼塊中的代碼不會執行。

相關文章
相關標籤/搜索