第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

何時(shí)拋出異常?

何時(shí)拋出異常?

何時(shí)拋出異常?我為我的應(yīng)用程序所不期望的每一個(gè)條件創(chuàng)建了異常。UserNameNotValidException, PasswordNotCorrectException等。然而,有人告訴我,我不應(yīng)該為這些條件設(shè)置例外。在我的UML中,這些是主流的異常,那么為什么不應(yīng)該是異常呢?是否有創(chuàng)建異常的指導(dǎo)或最佳實(shí)踐?
查看完整描述

3 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

我個(gè)人的指導(dǎo)方針是:當(dāng)發(fā)現(xiàn)當(dāng)前代碼塊的基本假設(shè)為假時(shí),拋出異常。

示例1:假設(shè)我有一個(gè)函數(shù),它應(yīng)該檢查任意類,如果該類繼承List<>,則返回true。這個(gè)函數(shù)提出一個(gè)問題:“這個(gè)對象是列表的后代嗎?”這個(gè)函數(shù)不應(yīng)該拋出異常,因?yàn)樗牟僮髦袥]有灰色區(qū)域-每個(gè)類都繼承或不繼承List<>,所以答案總是“或”否“。

示例2:假設(shè)我有另一個(gè)函數(shù),它檢查一個(gè)列表<>,如果它的長度大于50,返回true;如果長度小于50,則返回false。這個(gè)函數(shù)會(huì)問這樣一個(gè)問題:“這個(gè)列表有50多個(gè)項(xiàng)目嗎?”但是這個(gè)問題做了一個(gè)假設(shè)-它假設(shè)它給出的對象是一個(gè)列表。如果我給它一個(gè)空,那么這個(gè)假設(shè)是錯(cuò)誤的。在這種情況下,如果函數(shù)返回任一千真萬確如果是假的,那么它就違反了自己的規(guī)則。函數(shù)不能返回什么都行并聲稱它正確地回答了這個(gè)問題。所以它不會(huì)返回-它會(huì)拋出一個(gè)異常。

這與“滿載問題”邏輯謬誤。每個(gè)函數(shù)都會(huì)問一個(gè)問題。如果它所提供的輸入使這個(gè)問題成為一個(gè)謬誤,那么拋出一個(gè)異常。這一行很難用返回void的函數(shù)繪制,但底線是:如果函數(shù)對其輸入的假設(shè)被違反,它應(yīng)該拋出異常,而不是正常返回。

這個(gè)等式的另一面是:如果你發(fā)現(xiàn)你的函數(shù)經(jīng)常拋出異常,那么你可能需要改進(jìn)它們的假設(shè)。


查看完整回答
反對 回復(fù) 2019-06-13
?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

因?yàn)樗鼈兪钦0l(fā)生的事情。異常不是控制流機(jī)制。用戶經(jīng)常會(huì)錯(cuò)誤地使用密碼,這也不是一個(gè)例外情況。例外應(yīng)該是一件非常罕見的事情,UserHasDiedAtKeyboard類型情況。


查看完整回答
反對 回復(fù) 2019-06-13
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

我的小指南深受“代碼完整”一書的影響:

  • 使用異常通知不應(yīng)忽略的事情。
  • 如果錯(cuò)誤可以在本地處理,則不要使用異常
  • 確保異常處于與其他例程相同的抽象級別。
  • 應(yīng)該為

    真正的例外.


查看完整回答
反對 回復(fù) 2019-06-13
  • 3 回答
  • 0 關(guān)注
  • 704 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號