Как поймать «Не удалось десериализовать объект».исключение в Java (Android)? - PullRequest
0 голосов
/ 31 января 2019

Допустим, я конвертирую большую коллекцию данных с сервера в пользовательские локальные объекты Java.POJO имеет переменную int, которую я ожидаю получить от сервера.Только, скажем, некоторые данные перечисляют число в виде строки вместо целого числа.У меня есть цикл for, настроенный следующим образом:

for (Object document : DataSentFromServer) {                                   
   MyObjectClassArrayList.add(document.toObject(MyObject.class));
}

Так что для 99% документов int имеет тип int, а один - String.Таким образом, когда цикл for достигает этого документа, он выдает java.lang.RuntimeException: Could not deserialize object. Failed to convert a value of type java.lang.String to int Я знаю, что мне нужно обновить данные на сервере, я уже сделал это, чтобы решить эту проблему.

Мой вопрос: Как создать блок перехвата или что-то, что будет просто пропускать документы с сервера, которые не соответствуют модели данных моего класса объектов?Поскольку я не хочу, чтобы мои клиентские приложения зависали, если что-то не так с данными сервера.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Небольшое обновление ответа @Marksim Novikov.

 for (Object document : DataSentFromServer) {  
try{                                 
   MyObjectClassArrayList.add(document.toObject(MyObject.class));
}catch(RuntimeException e){
  //continue will skip the current iteration and go to next iteration
   continue;
  }
}

Итак, если вы столкнетесь с исключением Runtime, оно пропустит эту итерацию и перейдет к следующей.

0 голосов
/ 31 января 2019

Простое окружение функции с блоком try catch:

for (Object document : DataSentFromServer) {  
    try{                                 
       MyObjectClassArrayList.add(document.toObject(MyObject.class));
    }catch(RuntimeException e){
      //do something with the bad data if you wish.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...