異常-try...catch的方式處理異常2

ZHOU_VIP發表於2018-09-02
package cn.itcast_01;

/*
 * A:一個異常,前面已經講過了
 * 
 * B:二個異常的處理
 *         a:每一個寫一個try...catch
 *         b:寫一個try,多個catch
 *             try{
 *                 ...
 *             }catch(異常類名 變數名) {
 *                 ...
 *             }
 *             catch(異常類名 變數名) {
 *                 ...
 *             }
 *             ...
 * 
 *             注意事項:
 *                 1:能明確的儘量明確,不要用大的來處理。
 *                 2:平級關係的異常誰前誰後無所謂,如果出現了子父關係,父必須在後面。
 * 
 * 注意:
 *         一旦try裡面出了問題,就會在這裡把問題給丟擲去,然後和catch裡面的問題進行匹配,
 *         一旦有匹配的,就執行catch裡面的處理,然後結束了try...catch,繼續執行後面的語句。
 */
public class ExceptionDemo {
    public static void main(String[] args) {
        
        // method2();

        // method3();

        method4();
    }

    public static void method4() {
        int a = 10;
        int b = 0;
        int[] arr = { 1, 2, 3 };

        try {
            System.out.println(a / b);
            System.out.println(arr[3]);
            System.out.println("這裡出現了一個異常,你不太清楚是誰,該怎麼辦呢?");
        } catch (ArithmeticException e) {
            System.out.println("除數不能為0");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("你訪問了不該的訪問的索引");
        } catch (Exception e) {//Exception它可以匹配所有的異常,爺爺在最後
            System.out.println("出問題了");
        }
        
        System.out.println("over");

        /* 
         try {
            System.out.println(a / b);
            System.out.println(arr[3]);
            System.out.println("這裡出現了一個異常,你不太清楚是誰,該怎麼辦呢?");
        } catch (Exception e) {//爺爺在前面是不可以的
            System.out.println("出問題了");
        } catch (ArithmeticException e) {
            System.out.println("除數不能為0");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("你訪問了不該的訪問的索引");
        }

        System.out.println("over");*/
    }

    // 兩個異常的處理,寫一個try,多個catch
    public static void method3() {
        int a = 10;
        int b = 0;
        int[] arr = { 1, 2, 3 };

        try {
        	//一旦try裡面出了問題,就會在這裡把問題給丟擲去,然後和catch裡面的問題進行匹配,
        	//一旦有匹配的,就執行catch裡面的處理,然後結束了try...catch,繼續執行後面的語句。
        	
        	System.out.println(a / b);
            System.out.println(arr[3]);
            
            //System.out.println(arr[3]);
            //System.out.println(a / b);
            
        } catch (ArithmeticException e) {
            System.out.println("除數不能為0");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("你訪問了不該的訪問的索引");
        }

        System.out.println("over");
    }

    // 兩個異常的處理,每一個寫一個try...catch
    public static void method2() {
        int a = 10;
        int b = 0;
        try {
            System.out.println(a / b);
        } catch (ArithmeticException e) {
            System.out.println("除數不能為0");
        }

        int[] arr = { 1, 2, 3 };
        try {
            System.out.println(arr[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("你訪問了不該的訪問的索引");
        }

        System.out.println("over");
    }

   
}

 

相關文章