第五章 異常以及代碼Test

skywang12345-  

Java異常(一) Java異常簡介及其架構

          https://www.cnblogs.com/skywang12345/p/3544168.html

Java異常(二) 《Effective Java》中關於異常處理的幾條建議

         https://www.cnblogs.com/skywang12345/p/3544287.html

Java異常(三) 《Java Puzzles》中關於異常的幾個謎題

         https://www.cnblogs.com/skywang12345/p/3544353.html

Java程序在執行過程中所發生的異常事件可分爲兩類:

Error:  Java虛擬機無法解決的嚴重問題。如:JVM系統內部錯誤、資源耗盡等嚴重情況。一般不編寫針對性的代碼進行處理。

Exception: 其它因編程錯誤或偶然的外在因素導致的一般性問題,可以使用針對性的代碼進行處理。

Exception又分爲兩種:

unckecked異常:即RuntimeException,運行時異常。

           例如:ClassCastException  類型轉換異常

                      ArrayIndexOutOfBoundsException  數組越界異常

                      NullPointerException 空指針異常

                      ArithmeticException 計算異常

。。。

checked異常:編譯時異常。

               例如:java.lang.ClassNotFoundException

                          java.lang.InterruptedException

                          java.io.FileNotFoundException

                          java.sql.SQLException

。。。

 

代碼演示:


/*
*java.lang.ArithmeticException: / by zero
*/ 
public void NullPointerExceptionTest () {
        try {
            System.out.println(1/0);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

異常處理方式:

(1)throws方法頭部拋出異常;

(2)throw在方法內部拋出異常;

(3)通過try-catch-finally

無論是throws還是throw,都是向上拋出,如果上級調用仍未處理則繼續拋出,直到被try/catch捕獲處理位置。

而try-catch-finally,要求catch根據具體的異常捕獲最好,finally最終都會被處理,通常是用來釋放資源用的。

第一種方式--throws方法頭部拋出異常:

/**
 * @author yto_yh
 *
 */
public class TestException090501 {
    
    //try catch
    public void NullPointerExceptionTest () {
        try {
            System.out.println(1/0);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    // throws Exception
    public void NullPointerExceptionTest01 () 
        throws Exception{
            System.out.println(1/0);
    }
    
    public void NullPointerExceptionTest02 () throws Exception {
        int age = 0;
        age = -100;
        if(age<0)
        {
            ArithmeticException e = new ArithmeticException();//創建異常對象
            throw e;//拋出異常
        }
        System.out.println(age);

    }
    
    
    public static void main(String[] args) {
        TestException090501 t=new TestException090501();
         try {
            t.NullPointerExceptionTest02();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
}

 

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