java - 如何在Java(Android)中捕获 "Could not deserialize object."异常?

标签 java android google-cloud-firestore java-runtime-compiler

假设我正在将来自服务器的大量数据转换为自定义本地 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/

相关文章:

java - 可运行 Jar 文件中没有此类文件异常

Firebase 存储等待 uploadTask.onComplete 已过时

arrays - 如何将 Firestore 查询转换为 Javascript 数组

firebase - 没有创建 Firebase App '[DEFAULT]' - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()

android - Lottie动画慢android

java - 在 Spring URL 中导航

java - 使用单个 ExceptionMapper 捕获 Jackson 抛出的任何异常

java - 如何向我的应用程序用户发送确认电子邮件?

java - 如何在启动其他 Activity 后再次停止已经运行的媒体播放器并通过按钮启动该 Activity ?

android - OpenCV-Android highgui链接错误