Итак, в основном у меня есть такой код, где происходит повторение:
for (int i = 0; i < dataFromApi.size(); i++){
try {
returnedPoolData = dataFromApi.get(i).get();
if(returnedPoolData == null || returnedPoolData.getJsonString().isEmpty())
this.processAndStoreData(returnedPoolData, i, calledApis, id, true);
else
this.processAndStoreData(returnedPoolData, i, calledApis, id, false);
} catch (ExecutionException e){
log.info("" + e);
this.processAndStoreData(returnedPoolData, i, calledApis, id, true);
}
}
Я бы хотел избежать повторения, бросая IllegalArgumentException
и перехватывая его немедленно в блоке catch.
Таким образом, код будет выглядеть так:
for (int i = 0; i < dataFromApi.size(); i++){
try {
returnedPoolData = dataFromApi.get(i).get();
if(returnedPoolData == null || returnedPoolData.getJsonString().isEmpty())
throw new IllegalArgumentException("Returned data was empty.");
else
this.processAndStoreData(returnedPoolData, i, calledApis, id, false);
} catch (ExecutionException e){
log.info("" + e);
this.processAndStoreData(returnedPoolData, i, calledApis, id, true);
}
}
Будет ли это работать?Потому что, как только я уберу ExecutionException
, строка throw new
не будет подчеркнута красным ...