首先我們用一個例子來說明一下:
public static void main(String[] args) { // TODO 自動生成的方法存根/*/ * 處理異常的辦法 * try... catch...finally * throws * */ int a = 10; int b = 2; System.out.PRintln(a / b); System.out.println("結束"); }}輸出結果是:
5 結束 但是我們把代碼稍微改變一下:
public static void main(String[] args) { // TODO 自動生成的方法存根 /* * / 處理異常的辦法 try... catch...finally throws * */ int a = 10; // int b = 2; int b = 0; System.out.println(a / b); System.out.println("結束"); }}通過這樣我們發現程序沒報錯 ,但是運行結果如下:
java.lang.ArithmeticException
這時候程序就出現了異常情況,我要改怎么處理呢?
/* * / 處理異常的辦法 try… catch…finally * throws * */
public static void main(String[] args) { // TODO 自動生成的方法存根 /* * / 處理異常的辦法 try... catch...finally throws * */ int a = 10; // int b = 2; int b = 0; try { System.out.println(a / b); } catch (Exception e) { System.out.println("除數不能為0!"); } System.out.println("結束"); }}這樣呢,我們輸出結果:
除數不能為0! 結束
我們聲明的一點是,在catch代碼里必須要有聲明或者其他解決異常問題的方案或者提示,否則添加這個try…catch就沒有了任何的意義! 我們到底該如何處理異常:如果改功能內部可以將問題處理,用try…catch,如果處理不了交由調用者處理,這是用Throw
異常的處理: JVM的默認處理 把異常的名稱,原因,位置等信息輸出在控制臺,但是程序不能繼續運行。 自己處理 a:try…catch…finally 自己編寫處理代碼,使得后面的程序可以繼續執行。 b:throws 把自己處理不了的,在方法上聲明,告訴調用者,這里是有問題的!
Throw和Throws的區別。 1.Throws使用在函數上,Throw使用在函數內。 2.Throws后面跟異常類,可以跟多個,用逗號區別,Throw后面跟的是異常對象。
新聞熱點
疑難解答