天天看點

對異常說“我不管” | 帶你學《Java面向對象程式設計》之七十九

上一篇:知其是以然-剖析異常處理流程 | 帶你學《Java面向對象程式設計》之七十八

【本節目标】

通過閱讀本節内容,你将了解到throws和throw關鍵字的作用與使用方法,學會在方法或類中使用throws注明可能會發生的異常,使用throw來手動抛出異常。

throws關鍵字

通過之前的程式可以發現,在執行程式的過程之中有可能會産生異常,但是如果說現在假設你定義了一個方法,實際上就應該明确的告訴使用者,這個方法可能會産生何種異常,那麼此時就可以在方法的聲明上使用throws關鍵字來進行異常類型的标注。

範例:觀察throws的使用

class MyMath{
   //這個代碼執行的時候可能會産生異常,如果産生異常調用處處理
    public static int div(int x ,int y) throws Exception {
          return x / y ;
    }
}
public class JavaDemo{
    public static void main(String args[]) {
        try {
              System.out.println(MyMath.div(10,2)) ;         //5
        }catch (Exception e) {
              e.printStackTrace() ;
        }
    }     
}
System.out.println(MyMath.div(10,0)) ;           
對異常說“我不管” | 帶你學《Java面向對象程式設計》之七十九

圖一 執行異常處理

主方法本身也是一個方法,那麼實際上主方法也可以繼續向上抛出。

範例:在主方法上繼續抛出異常

class MyMath{
    //這個代碼執行的時候可能會産生異常,如果産生異常調用處處理
    public static int div(int x ,int y) throws Exception {
        return x / y ;
    }
}
public class JavaDemo{
    public static void main(String args[]) throws Exception {
        System.out.println(MyMath.div(10,0)) ;
   }     
}           
對異常說“我不管” | 帶你學《Java面向對象程式設計》之七十九

圖二 主方法上異常抛出

如果主方法繼續向上抛出異常,那麼就表示此異常将交由JVM負責處理。

throw關鍵字

與throws對應的還有throw關鍵字,此關鍵字的主要作用在于表示手工進行異常的抛出,即:此時将手工産生一個異常類的執行個體化對象,并且進行異常的抛出處理。

範例:觀察throw的使用

public class JavaDemo{
    public static void main(String args[])  {
        try {        //異常對象不再是由系統生成,而是由手工定義的
             throw new Exception("自己抛着玩的對象。") ;
        }catch (Exception e) {
             e.printStackTrace() ;
        }   
    }     
}           

面試題:請解釋throw與throws的差別?

  • throw:是在代碼塊中使用的,主要是手工進行異常對象的抛出;
  • throws是在方法定義上使用的,表示将此方法中可能産生的異常明确告訴給調用處,由調用處進行處理。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:get異常處理的必備技能 | 帶你學《Java面向對象程式設計》之八十 更多Java面向對象程式設計文章檢視此處