前言
今天 code review 時發(fā)現(xiàn)某個同事的代碼中存在濫用try catch
的現(xiàn)象。其實這種行為我們也許都經(jīng)歷過停撞,剛參加工作想盡量避免出現(xiàn)崩潰問題,因此不可避免得想在所有可能拋出異常的地方都try catch一下悼瓮。
當然戈毒,這種行為肯定是不可取的。如果這樣横堡,那還不如所有邏輯都包在大大的try catch里好了埋市。代碼的是否具有高健壯性必然是代碼是否高效優(yōu)雅決定的。
當然命贴,這個也引起我的思考道宅,try catch
會影響性能么食听?
結論
try catch
不會影響性能。——嚴格意義上說是微乎其微污茵。
這個結論的確很難讓人接受樱报,最起碼與我的預估不大一樣。
按照我的想法省咨,當代碼中出現(xiàn)的各種特性越多肃弟,輕量點的如enum
,重一點的如“反射”零蓉,必然會增加更多的開銷笤受。
然而,從結果看敌蜂,在沒有拋出異常時箩兽,try catch的影響跟添加了一個 if else是同一個量級的。也就是說章喉,我們完全可以忽視try catch耗費的那點性能汗贫。
網(wǎng)上已經(jīng)有很多人總結了結論,我也就不重復造輪子了秸脱。此結論經(jīng)過多方驗證落包,應該無誤,如有不同意見摊唇,請留言評論:
1咐蝇、異常如果沒發(fā)生,也就不會去查表巷查,也就是說你寫不寫try catch 也就是有沒有這 個異常表的問題有序,如果沒有發(fā)生異常,寫try catch對性能是木有消耗的岛请,所以不會讓程序跑得更慢旭寿。
2、try 的范圍大小其實就是異常表中兩個值(開始地址和結束地址)的差異而已崇败,也是不會影響性能的盅称。
推薦閱讀
偷懶是程序員的美德。我也就不重復造輪子了后室。
Java上的try catch并不影響性能