異常是程序中一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的 比如,你的代碼少了一個分號,那么運行出來就是java.lang.error;如果你用的System.out.PRintln(11/0),因為你用零做個除數,所以會拋出java.lang.arithmeticException異常。 異常發生的原因很多,通常包括以下幾大類
1. **用戶輸入了非法數據 2. 要打開的文件不存在 3. 網絡通信時鏈接中斷,或者jVM內存溢出** **檢查性異常:**最具有代表的檢查異常是用戶錯誤或者問題引起的異常,這是程序員無法預見的。例如要打開一個不存在的文件,一個異常就發生了,這些異常在編譯時不能被簡單的忽略。 **運行時異常:**運行時程序是可能被程序員避免的異常,與檢查性異常相反,運行時異??梢栽诰幾g的時被忽略 **錯誤:**錯誤不是異常,而是脫離程序員控制的問題,錯誤在代碼中通常被忽略,例如,當棧內存溢出時,一個錯誤就發生了,他們在編譯時是檢查不到的。try......catch和finally由于發生了異常,程序立即終止,無法向下繼續進行,為了解決這樣的問題,java中提供了一種對異常處理的方式-異常捕獲,異常捕獲是使用try....catch語句 try{ //程序代碼塊 catch{exceptiontype 類及子類)e){ //對異常的處理 } 其中在try代碼塊中編譯的是可能要發生的錯誤,catch代碼塊中編寫針對異常進行處理代碼,當try代碼塊中發生異常的時候,系統會將這個異常信息封裝成一個異常對象,并將這個對象傳遞給catch代碼塊,catch代碼塊需要一個參數指明它能夠接受的參數類型,這個參數必須是Exception類或者其子類。 注意:發生異常后語句后面的代碼塊是不會被執行的,只要當try代碼塊中發生錯誤 在程序中有時候我們希望有些語句無論程序時候發生異常都要進行執行,這時候就可以在try....catch后面加上finally代碼塊。finallu代碼塊中的代碼是程序無論出不出錯誤都是會被執行的。throws關鍵字
在有時候調用別人的方法時,是否知道別人的代碼有異常呢?我們很難做出判斷,所以java中允許咋方法的后面使用throws關鍵字對外聲明該方法可能發生異常,這樣調用著在調用方法的時候就知道該方法存在異常,并且必須在程序中對異常進行處理,否則編譯無法通過語法:修飾符 返回值類型 方法名([參數])throws Exception{ }從上句可以看出throws關鍵字必須寫在放啊聲明的后面,throws后面需要聲明方法中發生異常的的類型,通常將這種做法稱為方法聲明拋出一個一場。代碼如下
package text;public class Text2 { public static void main(String []args){ try { int result=dicide(4,0); System.out.println(result); } catch (Exception e) { // TODO 自動生成的 catch 塊 System.out.println("錯誤"); }finally{ System.out.println("雖然錯誤我還是可以執行"); } } public static int dicide(int x,int y){ int result=x/y; return result; }}新聞熱點
疑難解答