從業這麼多年,每當談起異常,都是懵懵懂懂,只是依稀記得它是處理錯誤的,當程序出錯,日誌裡會有異常日誌,可以查看異常定位錯誤。但是最近突然發現一個問題,那就是處理錯誤不一定非的要用異常啊,比如說參數合法性檢查等等,判斷是否為空後直接返回校驗信息等,通過程序的各種手段都可以處理,那為什麼要用異常呢?它到底能解決什麼問題呢?
我們平常寫程式時,很多人都忽略了一個問題,那就是“程式是否正確的執行完了”,而往往只是關心是否執行完了。這樣往往會將真正抓住錯誤的時機錯失,得到的是衍生出來的後續錯誤,並不是這次事故的真正原因。所以我們需要一個對錯誤的處理機制。
早期沒有異常處理機制時。錯誤的處理模式往往是會傳回某個特殊值或設定某個標誌,並且假定呼叫者將對這個回傳值或標誌進行檢查,以判定是否發生了錯誤。然而隨著時間的推移,人們發現,高傲的程式設計師更傾向於:「錯誤也許會發生,但那是別人造成的,不關我的事」。所以不檢查的情況就不足為奇了。有這樣的一部分函數,往往處理這種檢查很無聊,例如:println。
如果每次呼叫方法都徹底檢查,程式碼將會變得難以閱讀。並且需要定義每種包含錯誤訊息的資料結構作為函數的傳回類型。
● 如果沒有異常,那麼就必須檢查特定錯誤,並在程式中處理它,這樣程式碼的複用率會降低。
● 有了異常機制,就可以把「描述在正常執行過程中做什麼事」的程式碼和「出了問題怎麼辦」的程式碼分開。
所以設計異常的好處:能夠解放判斷返回值的方式,提供一種上拋的處理機制,降低程式碼的判斷複雜度,並能保證捕捉這個異常,集中處理,增強程式碼復用率。
以上是java為什麼要設計異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!