2017-02-22 36 views
0

У меня есть два идентификатора (id1, id2), и я хочу получить данные с сервера, если сначала сбой.Выполнять вызов сервера, если первый сбой в java

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

Это хорошая практика или есть альтернатива для этого?

+3

переместить его в другую попытку и не в улов. catch должен обрабатывать правильные исключения – XtremeBaumer

+1

Поместите try catch в метод, и если он не сработает, вызовите его снова. Убедитесь, что вы положили в него счетчик, иначе вы можете застрять в бесконечном цикле. –

+0

Зачем возникает исключение, если загрузка первого идентификатора не удалась? Почему возвращаемое значение метода просто не указывает на то, что загрузка не была успешной, например. потому что идентификатор не существует? В общем случае исключения должны быть именно такими, то есть ожидаемыми или неожиданными условиями, которые должны происходить редко. Если вы ожидаете, что операция потерпит неудачу по какой-то причине, часто лучше сделать это, например. путем проверки предварительных условий перед выполнением вызова или правильных значений возврата/состояния. – Thomas

ответ

1

Это не очень хорошая практика. Попробуйте использовать блок catch для обработки ошибки/исключения и регистрации информации об ошибке. Вы можете иметь чек условия, чтобы увидеть, если loadData1(id1); операция имеет успех, так что в следующей примерке поймать блок вы можете добавить логику 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 - это функция, которая уже реализовала обработку исключений.

Остальная часть кода должна быть продолжена, если выполнено одно из условий.

Смежные вопросы