拋出異常后面的代碼還會(huì)執(zhí)行嗎 程序運(yùn)行拋出異常什么意思?
程序運(yùn)行拋出異常什么意思?也就是說(shuō),程序中有一個(gè)錯(cuò)誤沒(méi)有被程序員或編譯器定義,并且程序不知道如何處理它,所以它中斷了執(zhí)行,并要求外部世界介入以解決問(wèn)題。做程序時(shí),如果某個(gè)查詢(xún)方法應(yīng)當(dāng)返回一條記錄,但是
程序運(yùn)行拋出異常什么意思?
也就是說(shuō),程序中有一個(gè)錯(cuò)誤沒(méi)有被程序員或編譯器定義,并且程序不知道如何處理它,所以它中斷了執(zhí)行,并要求外部世界介入以解決問(wèn)題。
做程序時(shí),如果某個(gè)查詢(xún)方法應(yīng)當(dāng)返回一條記錄,但是查出來(lái)多條,是拋異常好還是從多條中取第一條好?
我有10年的開(kāi)發(fā)和培訓(xùn)經(jīng)驗(yàn)。在此期間,我經(jīng)歷了Java、web、Android、H5、大數(shù)據(jù)、PHP等不同的發(fā)展方向。我也是軟件培訓(xùn)公司的金牌講師。我對(duì)回答這個(gè)問(wèn)題很感興趣。
您已經(jīng)清楚地解釋了這個(gè)問(wèn)題中的要求,“一個(gè)查詢(xún)方法應(yīng)該返回一條記錄,但是可以找到多條記錄”!也就是說(shuō),您的查詢(xún)應(yīng)該只有一個(gè)結(jié)果,但此時(shí)或某個(gè)時(shí)候,會(huì)有多個(gè)結(jié)果,這意味著您的業(yè)務(wù)接口可能不滿(mǎn)足冪等性的要求。根據(jù)冪等設(shè)計(jì)原理,無(wú)論怎樣查找,只要參數(shù)相同,返回的結(jié)果應(yīng)該是相同的。
那么如何解決這個(gè)問(wèn)題并拋出異常呢?返回到幾個(gè)中的第一個(gè)?
我認(rèn)為這不是一個(gè)完美的解決方案。
這對(duì)某些人來(lái)說(shuō)是一個(gè)解決方案,但是問(wèn)題解決了嗎?一點(diǎn)也不!問(wèn)題仍然存在。下次觸發(fā)此條件時(shí),仍將引發(fā)異常。就像說(shuō)森林里有一只老虎。有一天,它吃人,然后你不解決老虎的問(wèn)題。你只是在森林里掛了一塊牌子,上面寫(xiě)著:小心,里面有老虎!這…
事實(shí)上,這不是一個(gè)好辦法。也許只有一件東西應(yīng)該被退回。為什么要查詢(xún)多個(gè)項(xiàng)目?您是否檢查了數(shù)據(jù)庫(kù)中數(shù)據(jù)的唯一性?你不覺(jué)得每次查詢(xún)多個(gè)結(jié)果然后得到第一個(gè)數(shù)據(jù)效率很低嗎?
所以我們應(yīng)該從根本上解決問(wèn)題!為什么會(huì)產(chǎn)生多個(gè)數(shù)據(jù)?如果要手動(dòng)檢查數(shù)據(jù),則需要手動(dòng)檢查。如果要鎖定它,應(yīng)該盡最大努力確保輸入?yún)?shù)相同,結(jié)果相同
有什么辦法讓程序拋出異常后依然執(zhí)行?
1. 實(shí)際上,在拋出異常之后,不應(yīng)該調(diào)用catch,因?yàn)閏atch(catch code block)是在try code block之后執(zhí)行的,然后拋出異常,該異常是在catch code block捕獲異常之后執(zhí)行的。也就是說(shuō),順序是try--gtcatch--gtthrow2。拋出異常后,意味著不再執(zhí)行catch代碼塊;不要直接拋出catch-意味著catch代碼塊將在它之后繼續(xù)執(zhí)行。我不知道答案是否正確,但我希望它能幫助你。