2017-02-22 10 views
0

2つのid(id1、id2)があり、最初に失敗した場合はサーバからデータを取得したい。最初にJavaで失敗した場合にサーバコールを実行

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

は、これは良い習慣ですか、このための任意の代替はありますか?

+3

移動それを追加することができず、次のtry-catchブロックでするように、loadData1(id1);操作が成功するかどうかを確認するための条件のチェックを持つことができます。 catchは適切な例外を処理することです – XtremeBaumer

+1

メソッドにtry catchを入れ、失敗した場合は再度呼び出します。あなたがそれ以外の場合は、無限のループで立ち往生する可能性がカウンタを置くことを確認してください。 –

+0

最初のIDのロードに失敗した場合、なぜ例外が発生しますか?メソッドの戻り値が、ロードが成功しなかったことだけを示しているのはなぜですか? idは存在しないので?一般的に、例外はそれだけであることを意味し、まれに起こるはずの予期しないまたは予想外の状態を意味する。何らかの理由で操作が失敗することが予想される場合は、その操作を許可する方がよい場合があります。呼び出しを行う前に前提条件をチェックするか、適切な戻り値/状態をチェックします。 – Thomas

答えて

1

これはお勧めできません。エラー/例外を処理し、エラー情報を記録するために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関数のコールインキャッチは再び効果的なtry-catchでラップされます。
  2. loadData2は既に例外処理が実装されている関数です。

条件の1つが満たされる場合、残りのコードは実行を継続する必要があります。

関連する問題