運行應(yīng)用程序的方式有哪些 做程序時,如果某個查詢方法應(yīng)當(dāng)返回一條記錄,但是查出來多條,是拋異常好還是從多條中取第一條好?
做程序時,如果某個查詢方法應(yīng)當(dāng)返回一條記錄,但是查出來多條,是拋異常好還是從多條中取第一條好?我有10年的開發(fā)和培訓(xùn)經(jīng)驗。在此期間,我經(jīng)歷了Java、web、Android、H5、大數(shù)據(jù)、PHP等不同
做程序時,如果某個查詢方法應(yīng)當(dāng)返回一條記錄,但是查出來多條,是拋異常好還是從多條中取第一條好?
我有10年的開發(fā)和培訓(xùn)經(jīng)驗。在此期間,我經(jīng)歷了Java、web、Android、H5、大數(shù)據(jù)、PHP等不同的發(fā)展方向。我也是軟件培訓(xùn)公司的金牌講師。我對回答這個問題很感興趣。
您已經(jīng)清楚地解釋了這個問題中的要求,“一個查詢方法應(yīng)該返回一條記錄,但是可以找到多條記錄”!也就是說,您的查詢應(yīng)該只有一個結(jié)果,但此時或某個時候,會有多個結(jié)果,這意味著您的業(yè)務(wù)接口可能不滿足冪等性的要求。根據(jù)冪等設(shè)計原理,無論怎樣查找,只要參數(shù)相同,返回的結(jié)果應(yīng)該是相同的。
那么如何解決這個問題并拋出異常呢?返回到幾個中的第一個?
我認(rèn)為這不是一個完美的解決方案。
這對某些人來說是一個解決方案,但是問題解決了嗎?一點也不!問題仍然存在。下次觸發(fā)此條件時,仍將引發(fā)異常。就像說森林里有一只老虎。有一天,它吃人,然后你不解決老虎的問題。你只是在森林里掛了一塊牌子,上面寫著:小心,里面有老虎!這…
事實上,這不是一個好辦法。也許只有一件東西應(yīng)該被退回。為什么要查詢多個項目?您是否檢查了數(shù)據(jù)庫中數(shù)據(jù)的唯一性?你不覺得每次查詢多個結(jié)果然后得到第一個數(shù)據(jù)效率很低嗎?
所以我們應(yīng)該從根本上解決問題!為什么會產(chǎn)生多個數(shù)據(jù)?如果要手動檢查數(shù)據(jù),則需要手動檢查。如果要鎖定它,應(yīng)該盡最大努力確保輸入?yún)?shù)相同,結(jié)果相同
拋出異常意味著程序發(fā)生運行時錯誤,需要調(diào)試修改.為什么錯,解釋下?
這個原因的根源是程序不嚴(yán)謹(jǐn),或者不符合內(nèi)存管理的要求,或者存在邏輯錯誤或漏洞。
也可以說調(diào)試不徹底,這是程序固有的缺陷。
具體錯誤在哪里,程序員在錯誤環(huán)境中一步一步地調(diào)試就會知道。
程序運行拋出異常什么意思?
也就是說,程序中有一個錯誤沒有被程序員或編譯器定義,并且程序不知道如何處理它,所以它會中斷執(zhí)行并請求外部世界介入以解決問題。
、運行時異常與一般異常有何異同?
Throw是告訴調(diào)用者要拋出什么樣的異常,即異常的類型。Throw是拋出異常的實例。例如,throw new ioexception()throw是顯式拋出異常。Throws在方法聲明()之后使用{如果方法拋出runtime exception、runtimeException、error及其子類,則Throws不是必需的編譯時異常必須用Throws聲明
1。錯誤:可能是捕捉到異常,如IO異常、文件相關(guān)異常;也可能是內(nèi)存溢出,不一定是代碼問題。
2. 是:throws表示拋出異常的可能性。既然有可能,就不必拋出異常。
3. 是:throws和try-catch是處理異常的兩種方法。