捕获RealmFileException

时间:2018-04-24 13:38:06

标签: android realm

一小部分用户收到此错误:

  

由io.realm.exceptions.RealmFileException引起无法打开   路径领域

我已经完成了一些搜索,看起来这是由于损坏的域文件造成的。我已经输入以下代码来捕获错误,删除域并创建一个新域:

try {
  final Realm realm = Realm.getDefaultInstance()
  // realm opened successfully.  Do nothing
  realm.close();
} catch (RealmFileException e) { 
     // database corrupted. delete database
     Realm.deleteRealm(NbcRealmConfiguration.getInstance().getRealmConfiguration(getApplicationContext()));
     Realm.setDefaultConfiguration(new RealmConfiguration.Builder()
                    .name(getString(R.string.database_name))
                    .schemaVersion(REALM_SCHEMA)
                    .deleteRealmIfMigrationNeeded()
                    .build());
}

我的问题:

我无法复制此问题,因此无法测试此修复程序。 是否有人知道这是否是正确的方法,或者您能建议更好的方法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

是否是"对"方式取决于你。这将重新创造领域,但我想知道这个领域如何开始腐败。

假设这是生产中的问题,我可能会继续解决这个问题。我会添加一些日志记录,以便您可以看到何时发生这种情况。然后我会优先考虑进一步研究这个问题。注意它何时发生以及以何种速度发生。寻找有助于确定根本原因的趋势或模式。进一步查看堆栈,看它是否总是来自相同的代码。

如果它不在生产中,并且没有干扰其他团队成员,那么我会留下问题,因为当出现活动问题时,故障排除会更容易。