創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)定興免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。java 使用異常的好處總結(jié)
一、分析
Java異常處理機(jī)制確實(shí)比較慢,這個(gè)“比較慢”是相對于諸如String、Integer等對象來說,單單從對象的創(chuàng)建上來說,new一個(gè)IOException會比String慢5倍,這從異常的處理機(jī)制上也可以解釋:因?yàn)樗鼒?zhí)行fillStackTrace方法,要記錄當(dāng)前棧的快照,而String類則是直接申請創(chuàng)建一個(gè)內(nèi)存創(chuàng)建對象,異常類慢一籌也在所難免。
二、場景
我們知道異常是主邏輯的例外邏輯,舉個(gè)例子來說,比如我們能在馬路上走(這時(shí)主邏輯),突然開過一輛車,我要避讓(這是受檢異常,必須處理),繼續(xù)走著,不然一架飛機(jī)從我頭頂飛過(非受檢異常),我們可以選擇繼續(xù)行走(不捕捉),也可以選擇指責(zé)噪音污染(捕捉,主邏輯的補(bǔ)充處理),在繼續(xù)走著,突然一顆流星砸下來,這就沒有選擇,屬于錯(cuò)誤,不能做任何處理。
任何一個(gè)事物的處理都可能產(chǎn)生非預(yù)期的結(jié)果,問題是需要以何種手段來處理,如果不使用異常就需要依靠返回值的不同來進(jìn)行處理了,這嚴(yán)重嚴(yán)重失去了面向?qū)ο蟮娘L(fēng)格。
例如,用戶登錄的用例,就會在”例外事件“中說明”連續(xù)3次登陸失敗即鎖定用戶賬號“,這就是登陸事件的一個(gè)異常處理,具體到我們的程序中就是:
public voidlogin(){
try{
//正常登陸
}catch(InvalidLoginExceptionlie){
//用戶名無效
}catch(InvalidPasswordExceptionpe){
//密碼錯(cuò)誤的異常
}catch(TooMouchLoginExceptiontmle){
//多次登陸失敗的異常
}
}