首页 > 解决方案 > 如果 firestore 查询任务失败(task.isSuccessful() 返回 false),我可以期望 task.getException() 返回非空值吗

问题描述

我在我的 android 应用程序中使用 firestore。

在下面的代码中,我可以期望异常为非空吗?

FirebaseFirestore.getInstance().collection("items").document("abc").get().addOnCompleteListener(task -> {
    if (!task.isSuccessful()) {
        Exception e = task.getException();
        //Can I expect e to be non null, or do I have to check for null?
    }
});

标签: androidfirebasegoogle-cloud-firestore

解决方案


如果您使用 OnCompleteListener,则保证有结果或异常。如果task.isSuccessful(),则保证您有一个结果对象,并且没有例外。

addOnCompleteListener(task -> {
    if (!task.isSuccessful()) {
        // Exception is guaranteed to be non-null
        Exception e = task.getException();
    }
    else {
        // Result is guaranteed to be non-null
        task.getResult();
    }
});

如果使用 an OnSuccessListener,则结果保证为非空,但如果出现错误则不会被调用。

如果使用 an OnFailureListener,则异常保证为非空,但如果没有错误,则不会调用它。

如果您不想在 a 中检查是否成功,可以链接 anOnSuccessListener和a 。OnFailureListenerOnCompleteListener

您可以在此博客系列中阅读我对 Tasks 的规范参考。


推荐阅读