假设我正在将来自服务器的大量数据转换为自定义本地 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
我知道我需要更新服务器上的数据,我已经这样做来解决问题。
我的问题是:如何创建一个 catch block 或其他东西来简单地跳过服务器中与我的对象类的数据模型不匹配的文档?因为我不希望我的客户端应用程序在服务器数据出现问题时崩溃。
最佳答案
用 try catch block 简单地包围函数:
for (Object document : DataSentFromServer) {
try{
MyObjectClassArrayList.add(document.toObject(MyObject.class));
}catch(RuntimeException e){
//do something with the bad data if you wish.
}
}
关于java - 如何在Java(Android)中捕获 "Could not deserialize object."异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54455079/