2017-02-22 64 views
0

我有兩個id(id1,id2),如果第一次失敗,我想從服務器獲取數據。如果在java中首次失敗,執行服務器調用

try 
{ 
loadData1(id1); 
} 
catch(Exception e) 
{ 
loadData2(id2); 
} 

這是一個很好的做法還是有沒有其他的選擇呢?

+3

此舉將它添加邏輯來闖闖,而不是到抓。 catch是爲了處理異常。 – XtremeBaumer

+1

將try catch放在方法中,如果失敗,再調用它。確保你在其中放置了一個計數器,否則你可能會陷入無限循環。 –

+0

如果加載第一個ID失敗,爲什麼會出現異常?爲什麼方法的返回值只是表明加載不成功,例如因爲id不存在?一般情況下,例外情況就是這樣,即應該很少發生的預期或意外情況。如果由於某種原因預期手術失敗,通常更好的做法是,例如,通過在進行調用之前檢查前提條件或正確的返回值/狀態。 – Thomas

回答

1

這不是一個好習慣。嘗試使用catch塊來處理錯誤/異常並記錄錯誤信息。你可以有一個條件檢查,看是否loadData1(id1);操作是成功的,這樣在接下來的try-catch塊可以loadData2(id2);

boolean loadSuccess=false; 
    try 
    { 
    loadSuccess=loadData1(id1); 
    } 
    catch(Exception e) 
    { 
    //error handling or logging code goes here 
    } 
    if(!loadSuccess) 
    { 
    try 
    { 
    loadData2(id2); 
    } 
    catch(Exception e) 
    { 
    //error handling or logging code goes here 
    } 
    } 
0

loadData1在引發異常時失敗。但loadData2在那裏可以處理它 - 只要 -

  1. loadData2函數在catch中的調用再次包裝在一個有效的try-catch中。
  2. loadData2是已經執行了異常處理的函數。

如果滿足其中一個條件,代碼的其餘部分應該繼續執行。

相關問題