Java之try-catch和throws的區別

鄭清發表於2018-08-27

 try-catch和throws的區別:
    try-catch : 在當前位置處理異常
    throws    :   (語法格式:   在方法簽名之後:throws 異常型別)
                    向上丟擲異常,可以無限向上丟擲,直到拋給main方法,main方法就拋給JVM虛擬機器去解決
                    即比如在3個類中,第3個類出現異常,可向上拋給第二個類,第二個類如果不想解決,可繼續拋給第一個類中去解決,然後在第一個類中(呼叫第三個類中方法會出現異常)==》就使用try-catch解決異常


相當於throws可以向上指定拋到某一個類裡面去集合解決異常(使用try-catch解決異常),而try-catch是直接處理異常

 

注意:throws後可以同時丟擲多個異常型別  ex:public void 方法名() throws ArithmeticException,NumberFormatException{}

throws 原理:有throws的方法的是所有程式碼中 , 某行程式碼建立了異常物件,直接去跟throws後的異常型別匹配,如果匹配不上,則自動匹配下一個,匹配上為止。  
          i: 如果能匹配上則向上丟擲成功,由呼叫方法的地方來處理
         ii: 如果所有的都匹配不上,則丟擲失敗,由jvm預設處理

ex:

public class Demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			getResult();
			System.out.println("try......");
		} catch (ArithmeticException e) {
			// TODO: handle exception
			System.out.println("catch......");
		}
		
	}
	public static void getResult() throws ArithmeticException{  //把建立的異常物件拋給呼叫此方法的地方
		System.out.println(1/0);  //建立一個ArithmeticException型別的異常物件
		System.out.println("========"); //如果上一行程式碼建立了異常物件並向上丟擲了。此行程式碼不會執行
	}
}

執行結果圖:

相關文章