Если задача запроса Firestore не выполнена (task.isSuccessful () возвращает false), можно ли ожидать, что task.getException () вернет ненулевое значение - PullRequest
0 голосов
/ 24 марта 2019

Я использую Firestore в своем приложении для Android.

В следующем коде можно ли ожидать, что исключение будет ненулевым?

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?
    }
});

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Если вы используете 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();
    }
});

Если вы используете OnSuccessListener, результат гарантированно будет ненулевым, но не будет вызван в случае ошибки.

Если вы используете OnFailureListener, исключение гарантированно будет ненулевым, но оно не будет вызвано, если нет ошибки.

Вы можете связать OnSuccessListener и OnFailureListener, если не хотите проверять успех внутри OnCompleteListener.

Вы можете прочитать мой канонический справочник по Задачам в этой серии блогов .

1 голос
/ 24 марта 2019

По документам задачи в методе OnComplete, да, оно должно быть не нулевым.

Возвращает исключение, вызвавшее сбой Задачи.Возвращает ноль, если Задача еще не выполнена или успешно завершена.ссылка - https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html#getException()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...