異常什么意思 做程序時(shí),如果某個(gè)查詢方法應(yīng)當(dāng)返回一條記錄,但是查出來(lái)多條,是拋異常好還是從多條中取第一條好?
做程序時(shí),如果某個(gè)查詢方法應(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等不同
做程序時(shí),如果某個(gè)查詢方法應(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è)查詢方法應(yīng)該返回一條記錄,但是可以找到多條記錄”!也就是說(shuō),您的查詢應(yīng)該只有一個(gè)結(jié)果,但此時(shí)或某個(gè)時(shí)候,會(huì)有多個(gè)結(jié)果,這意味著您的業(yè)務(wù)接口可能不滿足冪等性的要求。根據(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)該被退回。為什么要查詢多個(gè)項(xiàng)目?您是否檢查了數(shù)據(jù)庫(kù)中數(shù)據(jù)的唯一性?你不覺(jué)得每次查詢多個(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é)果相同
java異常從業(yè)務(wù)層集中拋出,是不是每個(gè)控制層方法都要trycatch?
控制層中有兩種異常:一種是預(yù)期的,另一種是可預(yù)測(cè)的。這種異常需要捕獲并“嘗試修復(fù)”。例如,在查詢用戶信息RPC的過(guò)程中,存在異常,包括500ah和404ah。對(duì)于客戶端,基本上不需要重試,這可以通過(guò)一個(gè)明確的錯(cuò)誤代碼來(lái)通知。相反,在超時(shí)的情況下,可以通知客戶端稍后再試,不同的錯(cuò)誤代碼可以引導(dǎo)客戶端進(jìn)行不同的操作。另一種情況是控制層本身不考慮。在這種情況下,盲目的嘗試/捕捉?jīng)]有多大意義。它通常在框架級(jí)進(jìn)行統(tǒng)一處理,包括記錄異常信息和優(yōu)雅的返回失敗。
最后,對(duì)于try/catch的使用,我們并不意味著我們看不到異常,但我們更多地考慮捕獲后我可以做什么,以及我是否可以嘗試解決此問(wèn)題。如果沒(méi)有,我們可以把它扔到上層,記錄并報(bào)警。如果我們不把這個(gè)問(wèn)題想清楚,就很容易形成一個(gè)禁忌(吞下例外)。
怎樣讓自己集中注意力?
我對(duì)這個(gè)問(wèn)題有很好的理解。我生大兒子的時(shí)候,我覺(jué)得他很可愛(ài),總是喜歡和他玩。我怕他一個(gè)人呆著。結(jié)果,他現(xiàn)在很活躍,坐起來(lái)很難,而且他還在上小學(xué),所以不注意。
老大兩歲時(shí),我生了第二個(gè)孩子。我覺(jué)得太累了,不想再和第二個(gè)孩子玩了。有時(shí)我只是給他一個(gè)玩具。他在那兒工作了很長(zhǎng)時(shí)間,把那個(gè)玩具扔了。結(jié)果,他的注意力現(xiàn)在很集中。他一坐下,就必須在離開(kāi)桌子之前把畫(huà)畫(huà)好。
所以要從小培養(yǎng)注意力。太大的時(shí)候很難改變