天天看點

異常以及任何處理異常初學前言一.異常二、處理異常的兩種方法二、使用方法總結

文章目錄

  • 前言
  • 一.異常
  • 二、處理異常的兩種方法
  • 二、使用方法
    • 1.try-catch
    • 2.throws
    • 3 , try - catch -finally
      • 舉例
  • 總結

前言

對于一個程式員來說,我們會遇到一些異常(會導緻程式中斷的指令流),例如一個數不能除以0,在程式中這樣會産生異常,為了使程式能夠正常的運作下去,我們要處理異常

一.異常

異常分為受檢異常和非受檢異常,異常類下有許多子類,子類一些還有許多繼承子類。

受檢異常:就是寫成代碼會顯示錯誤,有可能發生異常

非受檢異常:隻有運作時才顯示異常,也叫運作時異常

Exception 範圍最大的異常

IOException 傳遞指令不對,導緻輸入輸出異常

RuntimeException 運作時異常,非受檢異常

二、處理異常的兩種方法

1.try-catch

2.throws

二、使用方法

1.try-catch

一般沒有提示自己覺得有資料錯誤,可以當作if-else使用,做錯誤處理

代碼如下(示例):

public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        // 首先這裡有兩種錯誤,
        //1,是兩個輸入不是數字,
        //2是兩個數字,除數為0
     	int a = s.nextInt();
     	int b = s.nextInt();  
        System.out.println(a/b);
    }
           
try {
            int a = s.nextInt();
            int b = s.nextInt();
            System.out.println(a/b);
        }catch (Exception e){
        //實際上是InputMismatchException,
        //ArithmeticException,括号内可以寫為InputMismatchException|ArithmeticException e
            System.out.println("輸入異常");
        }
           

2.throws

傳參參數異常,我們使用throws

代碼如下(示例):

public static void sum(String a,String b)throws IOException {
        int sum = Integer.parseInt(a)+Integer.parseInt(b);
        // 當然這是非受檢異常,但這個方法沒錯,錯誤在于傳入參數,把這個抛出去
   
    } 
           

3 , try - catch -finally

也是try-catch一種,隻不過格式可以擴充成下面

try{
//可能發生異常的代碼
}catch(異常情況(可以多個,可以一個)  參數值){
// 處理情況1,回調或者退出
}catch(異常情況 參數值){
// 處理情況2
}····{
}finally{
//必然執行代碼,無論是否異常都要執行
}

           

舉例

代碼如下,

public static void main(String[] args) {
        number n = new number();        // 生成實體類
        System.out.println( n(n).num); // 輸出為20
          System.out.println(m(1));    // 輸出為10
        
    }
   static class number{
        public int num;
    }
    static number n(number n){


        try {
            n.num= 10;
            return n;
        }catch ( Exception e){
        }finally {
            n.num = 20;
        }
        return n;
    }
     static  int m(int m){
        try {
            m= 10;
            return m; //如果去掉這行代碼,輸出為20
        }catch ( Exception e){
        }finally {
            m = 20;
        }
        return m;
    }
           

但是

總結

隻是對異常及處理有初步的了解,至于更深的可能後續補充與擴充