Из блока catch снова вернуться в catch

311
06 января 2017, 09:22

Всем привет. Интересует вопрос, можно ли из блока catch снова вернуться в этот блок catch? Вот код:

try {
   model = mNetworkDataManager.getModel(mUserScore.get(qNum));
} catch (IOException e) {
   Log.e(TAG, "Данные не дошли. Сообщение: " + e.getMessage());
   model = mNetworkDataManager.getModel(mUserScore.get(qNum));
}

суть в том, что если данные не дошли (бывает), мне нужно повторить запрос. Но компилятор требует, чтобы я строку "model = ..." в блоке catch опять поместил в конструкцию try - catch. Мне нужно добиться того, чтобы model != null. Как это можно сделать? Данные, кстати, загружаю через retrofit2

Answer 1

Вот так в цикле, возможно, будет лучше читаемо чем рекурсия.

    Model model = null;
    int attempts = 3;
    do {
        try {
            model = mNetworkDataManager.getModel(mUserScore.get(qNum));
        } catch (IOException e) {
            Log.e(TAG, "Данные не дошли. Сообщение: " + e.getMessage());
        }
        attempts--;
    } while (attempts > 0 && model == null);
Answer 2
int count = 0;
int tries = 3;
while(true) {
    try {
        // КОД
    } catch (Exception e) {
        // Описание ошибки
        if (++count == tries) throw e;
    }
}
READ ALSO
Методы wait и notify

Методы wait и notify

В интернете нашел пример использования wait и notify:

387
При каждом изменении кода и последующей компиляции выдает ошибку - Error:java: Cannot find JDK '1.8' for module 'MyProjects'

При каждом изменении кода и последующей компиляции выдает ошибку - Error:java: Cannot find JDK '1.8' for module 'MyProjects'

Опять нужна помощьПри первом запуске только что написанного кода проблем нет

355
Библиотека для работы с изображениями JAVA

Библиотека для работы с изображениями JAVA

Требуется библиотека java для обработки изображенияТребуется возможность создания, попиксельного редактирования и сохранения изображения...

421