1.首先我們來瞭解什麼是異常呢? 異常阻止當前方法或作用域繼續執行的問題。 2.處理異常 說到處理異常,我們當然會想到 try catch finally 在java中我們會對異常的處理有更高的認識 我們會學習 throw throws等更好的處理異常 3.throw關鍵字:語句拋出異常 throw ...
1.首先我們來瞭解什麼是異常呢?
異常阻止當前方法或作用域繼續執行的問題。
2.處理異常
說到處理異常,我們當然會想到 try catch finally
在java中我們會對異常的處理有更高的認識 我們會學習 throw throws等更好的處理異常
3.throw關鍵字:語句拋出異常 throws關鍵字:聲明異常(方法拋出一個異常)
01.throw 是語句拋出一個異常。
語法:throw (異常對象);
throw e;
02. throws 是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常) 調用者必須做出處理(捕獲或繼續拋出)
語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{......}
public void doA(int a) throws Exception1,Exception3{......}
03.throws可以單獨使用,但throw不能, throw要麼和try-catch-finally語句配套使用,要麼與throws配套使用。但throws可以單獨使 用,然後再由處理異常的方法捕獲。
04.throw語句用在方法體內,表示拋出異常,由方法體內的語句處理
throws語句用在方法聲明後面,表示再拋出異常,由調用這個方法的上一級方法中的語句來處理,必須做出處理(捕獲或繼續聲明)
05.throws主要是聲明這個方法會拋出這種類型的異常,使其他地方調用它時知道要捕獲這個異常,使得提醒必須做出處理。否則編譯是不會通過的。
throw是具體向外拋異常的動作,所以它是拋出一個異常實例。
eg:
public void dothing(int a,int b) throws Exception1,Exception3 { try{ //...... }catch(Exception1 e){ throw e; }catch(Exception2 e){ System.out.println("自己列印提示,不拋出"); } if(a!=b) throw new Exception3("自定義異常"); }
代碼塊中可能會產生3個異常,(Exception1,Exception2,Exception3)。
如果產生Exception1異常,則捕獲之後再拋出,由該方法的調用者去處理。
如果產生Exception2異常,則該方法自己處理了(即列印出字元串:自己列印提示,不拋出)。所以該方法就不會再向外拋出Exception2異常了,void dothing() throws Exception1,Exception3 裡面的Exception2也就不用寫了(當然你寫了也不會報錯的),throws 就是聲明可能拋出的錯誤,而Exception2 並未做出拋出操作。
而Exception3異常是該方法的某段邏輯出錯,程式員自己做了處理,在該段邏輯錯誤的情況下拋出異常Exception3,則該方法的調用者也要處理此異常。