android - 如果 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?
}
});
解决方案
如果您使用 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 。OnFailureListener
OnCompleteListener
您可以在此博客系列中阅读我对 Tasks 的规范参考。
推荐阅读
- python - 更新列值 - Pandas
- javascript - 如何对所有行内的输入求和?
- python-3.x - 仅在预测时出现 Keras 形状问题
- python - 使用 vgg16 模型集成面部识别和情感识别
- c - C 中的宏复合表达式中的“预期表达式”错误
- ios - Swift DateFormatter amSymbol 不能与 dosRelativeDateFormatting 一起使用?
- javascript - 如何从数组 discord.js 添加嵌入消息?
- griddb - 面临问题查询和数据管理?
- reactjs - 谁能解释为什么第一个点击的项目没有显示在列表中?
- python - 如何检查一个字母是否在一个元组中并显示该单词