throw 和 throws 都與異常處理有關,但它們的用法和含義不同。
兩者的區別
throw 在方法體內使用,throws 在方法宣告上使用。
throw 後面接的是異常物件,只能接一個。throws 後面接的是異常型別,可以接多個,多個異常型別用逗號隔開。
throw 是在方法中出現不正確情況時,手動來丟擲異常,結束方法的,執行了 throw 語句一定會出現異常。而 throws 是用來宣告當前方法有可能會出現某種異常的,如果出現了相應的異常,將由呼叫者來處理,宣告瞭異常不一定會出現異常。
throw 是一個關鍵字,用於丟擲一個異常物件,示例如下:
throw new Exception("丟擲一個異常");
throws 是一個關鍵字,用於宣告方法可能會丟擲的異常型別,示例如下:
public void method() throws Exception {
// 方法體
}
throws 是用在某個方法的方法宣告上的,表示當前方法如果丟擲了某些異常,將由呼叫者來進行異常處理。這種方式也可以讓呼叫者知曉該對哪些異常進行處理。throws 宣告的異常不一定會出現,只是一種可能。
//呼叫者處理異常,有兩種處理方式
//第一種就是再次丟擲
//第二種用try和catch環繞
public static void main(String[] args) throws Exception{
try {
Demo1();
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
}
}
// 定義方法時,throws宣告該方法可能丟擲的異常型別
// Exception包含所有異常型別
public static void Demo1() throws ArithmeticException{
int i=1/0;
System.out.println(i);
}
throw 是用在某個方法的方法體內的,當我們認定某種情況不合理時,就可以建立異常物件,封裝好異常資訊,然後透過 throw 來丟擲異常並終止該方法。
public static void Demo2(int age){
if(age<0||age>100){
//throw用在Demo2(int age)方法的方法體內
//括號裡面提示出的什麼問題
throw new ArithmeticException("年齡不合法");
}
}