用異常做流程控制這樣好嗎
不建議用異常做流程控制吧,剛進(jìn)公司的時(shí)候coding style上就有一條不要用異常做流程控制,會(huì)影響性能,但具體會(huì)影響多少我也沒有測(cè)試過,希望有經(jīng)驗(yàn)的兄弟可以解釋一下?
不建議用異常做流程控制吧,剛進(jìn)公司的時(shí)候coding style上就有一條不要用異常做流程控制,會(huì)影響性能,但具體會(huì)影響多少我也沒有測(cè)試過,希望有經(jīng)驗(yàn)的兄弟可以解釋一下?
2017-10-13
舉報(bào)
2018-10-05
我覺得關(guān)鍵是對(duì)異常的理解~數(shù)據(jù)格式不符合要求算是一種異常,那么年齡不在期望范圍內(nèi)算不算異常呢?如何可以接受這種情況,并做出相應(yīng)業(yè)務(wù)處理,那么應(yīng)該算是流程控制(畢竟有后續(xù)流程等著它嘛),但是如果系統(tǒng)根本不想處理這種情況,也就是沒有后續(xù)的業(yè)務(wù)邏輯了,那么應(yīng)該就算是異常了吧。
老師的這種處理,真的看起來(lái)像是流程控制,但是,也可以將其理解為異常吧。
至于題主的問題,異常對(duì)程序性能的影響,應(yīng)該和Java虛擬機(jī)對(duì)異常的處理有關(guān),至于細(xì)節(jié),我還得學(xué)習(xí)一波。
2017-10-14
記得effectiveJava上有說過這個(gè)問題,可以去看一下。程序出現(xiàn)問題拋出異常也比較符合面向?qū)ο蟮囊粋€(gè)概念。個(gè)人認(rèn)為底層采用拋出不同類型的異常對(duì)出現(xiàn)的問題進(jìn)行一個(gè)詳細(xì)的劃分供上層調(diào)用者處理是一個(gè)很好的處理方式。而你提到的不要用異常做流程控制指的是有些問題可以通過判斷對(duì)不同的情況進(jìn)行不同流程的處理。而不是說當(dāng)程序異常時(shí)認(rèn)為是另一種情況然后在catch中做大量的業(yè)務(wù)邏輯處理。這樣是不對(duì)的。