問題
面試官:
try-catch 到底寫在循環(huán)里面好,還是外面好?
這個問題,我相信大部分人都會答錯!
到底寫在哪里好?
很多人會說當(dāng)然寫在循環(huán)外面好,也有一部分人說寫在循環(huán)里面好,其實這兩種回答都不完全對,我們來分析下兩者的弊端。
try-catch 寫在循環(huán)外面的弊端:
try {
for (...){
// 處理邏輯
}
} catch(Exception e) {
...
}
如果 try-catch 寫在循環(huán)外面,一條數(shù)據(jù)處理異常,循環(huán)結(jié)束,會導(dǎo)致整個任務(wù)的結(jié)束,嚴(yán)重影響系統(tǒng)效率。
try-catch 寫在循環(huán)里面的弊端:
for (...){
try {
// 處理邏輯
} catch(Exception e) {
...
}
}
因為異常處理會影響效率,如果 try-catch 寫在循環(huán)里面,會造成過多的、沒有必要的循環(huán)異常處理,會嚴(yán)重影響系統(tǒng)效率。
這一點在阿里巴巴的《Java開發(fā)手冊》異常處理中也有相關(guān)提及:
這里提到了異常的處理效率,確實相對較低,如果循環(huán)中寫 try-catch,異常不發(fā)生或者少發(fā)生就還好,如果異常發(fā)生較多,系統(tǒng)效率肯定會降低。這個完整版手冊可以關(guān)注公眾號Java技術(shù)核心,在后臺回復(fù)關(guān)鍵字 "手冊" 獲取。
所以,不管寫在哪里,這個要看實際情況,要結(jié)合具體業(yè)務(wù)再做出具體的選擇的,并不是絕對的寫在哪里就一定好或者不好。
應(yīng)用場景
下面我總結(jié)一下兩者的應(yīng)用場景,歡迎留言補充!
try-catch 適合寫在循環(huán)外面的場景:
1)一條數(shù)據(jù)處理異常,需要停止后面的數(shù)據(jù)處理;
2)不能接受任意數(shù)據(jù)處理異常,如在事務(wù)方法中,需要整體成功或者失敗,這時一條數(shù)據(jù)處理異常,就需要停止循環(huán)后面的數(shù)據(jù)處理,同時需要回滾循環(huán)中所有已處理過的數(shù)據(jù);
try-catch 適合寫在循環(huán)里面的場景:
1)一條數(shù)據(jù)處理異常,不能影響其他數(shù)據(jù)的處理;
2)能接受少部分的數(shù)據(jù)處理異常,而不影響整體數(shù)據(jù)處理;
如果是連接超時異常類,如果要寫在循環(huán)里面,可以設(shè)置在超過 N 條連接超時后強制退出循環(huán),一方面排除了網(wǎng)絡(luò)波動,服務(wù)可能真的出現(xiàn)故障,這時可以避免過多沒有必要的請求超時,待服務(wù)恢復(fù)后再重試;
總結(jié)
目前沒有規(guī)范說一定要寫在哪里比較好,try-catch 寫在循環(huán)里面或者外面都可以,上面分析了兩者的弊端和應(yīng)用場景,我們也可以根據(jù)實際業(yè)務(wù)場景作出選擇。
對于這個面試題,你有什么想分享的呢?歡迎留言討論~!
好了,今天的分享就到這里了,后面棧長會分享更多好玩的 Java 技術(shù)和最新的技術(shù)資訊,關(guān)注公眾號Java技術(shù)棧第一時間推送,我也將主流 Java 面試題和參考答案都整理好了,在公眾號后臺回復(fù)關(guān)鍵字 "面試" 進(jìn)行刷題。
最后,覺得我的文章對你用收獲的話,動動小手,給個在看、轉(zhuǎn)發(fā),原創(chuàng)不易,棧長需要你的鼓勵。
版權(quán)聲明: 本文系公眾號 "Java技術(shù)棧" 原創(chuàng),轉(zhuǎn)載、引用本文內(nèi)容請注明出處,抄襲、洗稿一律投訴侵權(quán),后果自負(fù),并保留追究其法律責(zé)任的權(quán)利。
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
2.勁爆!Java 協(xié)程要來了。。。
3.Spring Boot 2.x 教程,太全了!
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優(yōu)雅的方式!!
5.《Java開發(fā)手冊(嵩山版)》最新發(fā)布,速速下載!文章來源:http://www.zghlxwxcb.cn/news/detail-601834.html
覺得不錯,別忘了隨手點贊+轉(zhuǎn)發(fā)哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-601834.html
到了這里,關(guān)于面試官:try-catch 到底寫在循環(huán)里面好,還是外面好?大部分人都會答錯!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!