異常是指由於程式中的錯誤而導致正常的程式流程中斷的一種事件。
1.沒有錯誤處理的程式:
2.以常規方法處理錯誤:
openfiles;
if (thefilesopen)
else errorcode=-3;
}else errorcode=-4 ;
}else errorcode=-5;
以常規方法處理錯誤存在的問題:
觀察前面的程式,大家會發現大部分精力花在出錯處理上了
只把能夠想到的錯誤考慮到,對以外的情況無法處理
程式可讀性差,大量的錯誤處理**混雜在程式中
出錯返回資訊量太少,無法更確切的了解錯誤狀況或原因
3.用異常的形式處理錯誤:
catch(fileopenfailed)
catch(sizedeterminefailed)
catch(memoryallocatefailed)
catch(readfailed)
catch(fileclosefailed)
finally
}異常機制的優點:
把錯誤處理**從常規**中分離出來
按錯誤型別和差別分組(類exception,派生)
對無法**的錯誤的捕獲和處理(基類)
克服了傳統方法的錯誤資訊有限的問題(getmessage)
把錯誤傳播給呼叫堆疊(比較:全域性變數,返回值)
什麼情況下使用異常機制?
當方法因為自身無法控制的原因而不能完成其任務
(檔案不存在,網路連線無法建立……
處理在方法、類庫、類中丟擲的異常
( 如fileinputstream.read產生ioexception
在大的專案中採用統一的方式處理錯誤時
( 如編寫乙個文字處理器
異常應該是不經常發生但卻可能發生的故障
(一定發生的事件不應該用異常機制來處理
異常處理用於使系統從故障中恢復
( 提示資訊/不產生無效的結果/釋放資源
異常機制的關鍵步驟
try
定義可能產生異常的**段
catch (etype e)
用於捕獲乙個異常
finally
用於做統一的事後處理,如釋放資源
throw e;
用於丟擲乙個異常
throws etype1, etype2 ……
用於宣告方法可能丟擲的異常型別
Java基礎學習 異常
throwable異常父類下分為error錯誤跟exception異常 error一般是虛擬機器中的錯誤。程式中是修改不了的。exception異常又分為執行時異常 runtimeexception 編譯異常 ioexception,sqlexception等 大部分自定義異常都是編譯異常 1 宣告...
java學習 異常
1.如果類的方法定義時使用throws宣告了異常,那麼該方法被呼叫時必須捕獲這個異常 class test public void devide throws exception 2.exception 是throwable的子類,我們在程式中也可以定義自己的異常,並在程式中throw丟擲 3.乙個...
Java異常學習
1 三種型別異常 checked exception unchecked exception runtime exception error 2 五個關鍵字 try catch finally throw throws 3 使用try finally try catch finally 那什麼時候使...