亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從另一個方法調用拋出異常的方法時,如何避免出現“缺少返回語句”?

從另一個方法調用拋出異常的方法時,如何避免出現“缺少返回語句”?

夢里花落0921 2022-12-21 10:07:04
我有一個方法可以處理不同的錯誤代碼并始終拋出未經檢查的異常。這個方法在全班很多地方都用到了。當我嘗試在另一個沒有 void 返回類型的方法中調用它時,如下所示:public Object someMethod() {   ....   if(success){     return result;   } else {      callMethodThatAlwaysThrowsUncheckedExceptions();   }}java 編譯器說該方法是missing return statement.如何解決這個問題,我想到了兩個選擇:用其內容替換方法調用在返回空對象的方法調用之后添加一個返回語句但是我真的不喜歡這些選項中的任何一個:第一個是因為代碼重復,第二個是因為需要編寫永遠不會執行的代碼。還有其他方法可以解決這個問題嗎?
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

只需交換條款,如果方法拋出,您將永遠無法返回。


 if(!success){

   callMethodThatAlwaysThrowsUncheckedExceptions();

 } 


 return result;

甚至


 callMethodThatAlwaysThrowsUncheckedExceptions(succes);

 return result;

只需檢查您的投擲方法中的成功條件。


查看完整回答
反對 回復 2022-12-21
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

除了Slawomir Chodnicki 已經提供的出色答案之外,還有另一個建議。

callMethodThatAlwaysThrowsUncheckedExceptions()將你的which somewhere throws an更改Exception為工廠方法。例如:改變這個:

// somewhere in callMethodThatAlwaysThrowsUncheckedExceptions
throw new MyException();

到:

return new MyException();

這樣你就可以像這樣調用那個方法:

throw callMethodThatAlwaysThrowsUncheckedExceptions();

因此將幫助編譯器看到這是該執行分支的最后一條語句。

這也適用于不同的例外情況,return而不是throw


查看完整回答
反對 回復 2022-12-21
  • 2 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號