從業這麼多年,每當談起異常,都是懵懵懂懂,只是依稀記得它是處理錯誤的,當程式出錯,日誌裡會有異常日誌,可以檢視異常定位錯誤。但是最近突然發現乙個問題,那就是處理錯誤不一定非的要用異常啊,比如說引數合法性檢查等等,判斷是否為空後直接返回校驗資訊等,通過程式的各種手段都可以處理,那麼為什麼要用異常呢?它到底能解決什麼問題呢?
我們平時寫程式時,很多人都忽略了乙個問題,那就是「程式是否正確的執行完了」,而往往只是關心是否執行完了。這樣往往會將真正抓住錯誤的時機錯失,得到的是衍生出來的後續錯誤,並不是此次事故的真正原因。所以我們需要一種對錯誤的處理機制。
早期沒有異常處理機制時。錯誤的處理模式往往是會返回某個特殊值或設定某個標誌,並且假定呼叫者將對這個返回值或標誌進行檢查,以判定是否發生了錯誤。然而隨著時間的推移,人們發現,高傲的程式設計師們更傾向於:「錯誤也許會發生,但那是別人造成的,不關我的事」。所以不檢查的情況就不足為奇了。有這樣的一部分函式,往往處理這種檢查很無聊,比如:println。如果的確每次呼叫方法都徹底檢查,**將會變得難以閱讀。並且需要定義每種包含錯誤資訊的資料結構作為函式的返回型別。
所以設計異常的好處:能夠解放判斷返回值的方式,提供一種上拋的處理機制,降低**的判斷複雜度,並能保證捕獲這個異常,集中處理,增強**復用率。
java為什麼要註解?
根據一般說法 編寫文件 通過 裡標識的元資料生成文件 生成文件doc文件 分析 通過 裡標識的元資料對 進行分析 使用反射 編譯檢查 通過 裡標識的元資料讓編譯器能夠實現基本的編譯檢查 override 就是給 新增一些元資料,描述資訊,這些描述資訊可以在允許時通過api獲取到,然後針對這些註解進行...
為什麼要原型設計
隨著原型應用的普及,越來越多的產品會採用原型設計來表述 完善整體需求,這樣做自然有其原因,但為何要進行原型設計呢?在回答這個問題前,首先要說一下溝通這個普遍存在的問題。人們在溝通過程中,乙個人通常只能說出心中所想的80 但對方聽到的最多只能是60 聽懂的卻只有40 結果執行時,只有20 了。心中的想...
Julia 為什麼要設計nothing
julia中的nothing是什麼玩藝?簡單地說,就是不返回值。為什麼要這個呢?你看一下。情況一 f 裡面,事實上,有沒有nothing,沒有什麼差別 function f a for i in eachindex 1 10 a 1 1 end nothing for 循還外,預設不返回值。end情...