總的來說異常分為兩種:一、cheked exception(檢查異常),此異常在編譯時候就會檢測出來,我們必須進行捕獲處理。二、unchecked exception(非檢查異常),此異常是在執行期才會丟擲。例如我們常見的nullpointerexception、indexoutofbound***ception等。
對於這兩種異常,它是什麼情況下才會出現呢?我們又該怎麼處理呢?
一、編譯時出現的異常
1、由底層jdk向上丟擲的異常,當我們在用io流時如:
fileinputstream in = new fileinputstream(file);
2、由我們自己在**塊丟擲異常如:編譯時對於上述兩種情況,我們必須強制處理該異常,方法一:就是對異常**塊進行try{}…catch{} 方法二就是把異常繼續向上拋 throws **exception,如下示例:if(true)
publicvoid
examplea()
catch
(filenotfoundexception e)
}public
void exampleb() throws
filenotfoundexception
二、執行時出現的異常。
1、由於我們**邏輯不謹慎或者其它原因造成,如nullpointerexception
2、我們人為的丟擲異常,如繼承了runtimeexception的自定義異常。
這種執行時異常在編譯的時候我們是發現不了的,但是在執行期一旦出現,它也會中斷程式的執行,這種無形中的bug,更加可怕,因此通常對執行時可能出現的異常,我們也將進行try{}。。。catch{}處理。
異常設計的建議
只在必要使用異常的地方才使用異常,不要用異常去控制程式的流程
切忌使用空catch塊
檢查異常和非檢查異常的選擇
注意catch塊的順序
不要將提供給使用者看的資訊放在異常資訊裡
避免多次在日誌資訊中記錄同乙個異常
異常處理盡量放在高層進行
在finally中釋放資源
參考資料:
處理異常總結
總結一下在ray上看到的關於異常的幫助 有兩種崩潰 一種是sigabrt exc crash 一種是exc bad access sigbus or sigsegv sigabrt exc bad access是一種更難除錯的異常,因為它通常是記憶體管理問題 1.注意 錯誤 this class i...
的異常處理 C 異常處理總結
做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...
Java異常處理總結
轉至 http sllereak.blog.163.com blog runtimeexception 執行時異常,不需要顯示捕獲 只要是throwable的例項或者它的子類的例項都能被throws 方法中 也能被throw 塊中 exception我能處理的 error系統斷電,無法處理 runt...