java 使用異常的好處總結(jié)
java 使用異常的好處總結(jié)
一、分析
Java異常處理機(jī)制確實(shí)比較慢,這個(gè)“比較慢”是相對(duì)于諸如String、Integer等對(duì)象來(lái)說(shuō),單單從對(duì)象的創(chuàng)建上來(lái)說(shuō),new一個(gè)IOException會(huì)比String慢5倍,這從異常的處理機(jī)制上也可以解釋:因?yàn)樗鼒?zhí)行fillStackTrace方法,要記錄當(dāng)前棧的快照,而String類則是直接申請(qǐng)創(chuàng)建一個(gè)內(nèi)存創(chuàng)建對(duì)象,異常類慢一籌也在所難免。
二、場(chǎng)景
我們知道異常是主邏輯的例外邏輯,舉個(gè)例子來(lái)說(shuō),比如我們能在馬路上走(這時(shí)主邏輯),突然開過(guò)一輛車,我要避讓(這是受檢異常,必須處理),繼續(xù)走著,不然一架飛機(jī)從我頭頂飛過(guò)(非受檢異常),我們可以選擇繼續(xù)行走(不捕捉),也可以選擇指責(zé)噪音污染(捕捉,主邏輯的補(bǔ)充處理),在繼續(xù)走著,突然一顆流星砸下來(lái),這就沒(méi)有選擇,屬于錯(cuò)誤,不能做任何處理。
任何一個(gè)事物的處理都可能產(chǎn)生非預(yù)期的結(jié)果,問(wèn)題是需要以何種手段來(lái)處理,如果不使用異常就需要依靠返回值的不同來(lái)進(jìn)行處理了,這嚴(yán)重嚴(yán)重失去了面向?qū)ο蟮娘L(fēng)格。
例如,用戶登錄的用例,就會(huì)在”例外事件“中說(shuō)明”連續(xù)3次登陸失敗即鎖定用戶賬號(hào)“,這就是登陸事件的一個(gè)異常處理,具體到我們的程序中就是:
<span style="font-family:SimSun;font-size:14px;"> public voidlogin(){ try{ //正常登陸 }catch(InvalidLoginExceptionlie){ //用戶名無(wú)效 }catch(InvalidPasswordExceptionpe){ //密碼錯(cuò)誤的異常 }catch(TooMouchLoginExceptiontmle){ //多次登陸失敗的異常 } }</span>
如此設(shè)計(jì)則可以讓我們的login方法更符合實(shí)際的處理邏輯,同時(shí)使主邏輯(正常登陸,try代表塊)更加清晰。使用異常有很多優(yōu)點(diǎn),比如可讓正常代碼和異常代碼分離,能快速查找問(wèn)題(棧信息快照)等,但是異常有一個(gè)缺點(diǎn):性能比較慢。
但是我們不能因?yàn)樾阅軉?wèn)題而放棄使用異常,難道我們的系統(tǒng)連如此微小的性能消耗都不允許嗎?
三、建議
性能問(wèn)題不是拒絕異常的借口
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Eclipse git推送上傳錯(cuò)誤問(wèn)題解決方案
這篇文章主要介紹了Eclipse git推送上傳錯(cuò)誤問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09java圖的深度優(yōu)先遍歷實(shí)現(xiàn)隨機(jī)生成迷宮
這篇文章主要為大家詳細(xì)介紹了java圖的深度優(yōu)先遍歷實(shí)現(xiàn)隨機(jī)生成迷宮,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Spring Boot 2.4配置特定環(huán)境時(shí)spring: profiles提示被棄用的原
這篇文章主要介紹了Spring Boot 2.4配置特定環(huán)境時(shí)spring: profiles提示被棄用的原因,本文給大家分享詳細(xì)解決方案,需要的朋友可以參考下2023-04-04