Dart — обработка исключений FirebaseFirestore

#firebase #flutter #dart #exception

#firebase #флаттер #dart #исключение

Вопрос:

Документация очень плохо описывает обработку исключений при использовании firebase firestore. Я собираюсь предположить, что такой вещи для обработки конкретных ошибок не существует.

В настоящее время я использую последние зависимости:

  • firebase_core: ^ 0.5.0
  • firebase_auth: ^ 0.18.0 1
  • cloud_firestore: ^ 0.14.0 2

В firebase_auth хорошо документировано и понятно, как обрабатывать исключения. Существует класс исключений с именем FirebaseAuthException , в котором есть code поле, содержащее конкретный код ошибки (к сожалению, в виде строки, но, по крайней мере, оно что-то предоставляет), например, неверный адрес электронной почты, отключенный пользователем, слабый пароль и так далее. Это приятно иметь, потому что я могу уведомить пользователя о том, что пошло не так, и программа может действовать соответствующим образом на основе этих кодов ошибок.

С другой стороны, к сожалению, нет такого понятия, как FirebaseFirestoreException , и документация не очень помогает. Он показывает не что иное, как .catchError() обработку возможных исключений с помощью переменной ошибки с dynamic типом, поэтому в принципе это может быть что угодно.

 Future<void> addUser() {
  // Call the user's CollectionReference to add a new user
  return users
      .add({
        'full_name': fullName,
        'company': company,
        'age': age
      })
      .then((value) => print("User Added"))
      .catchError((error) => print("Failed to add user: $error"));
}
  

Итак, мой вопрос в том, есть ли что-нибудь или подобное для обработки конкретных случаев исключения, например, FirebaseAuthException с некоторыми кодами ошибок и прочим. И, кроме того, как я могу определить, является ли это исключением FirebaseFirestore? Почему он не предоставляет исключений, чтобы сделать работу более удобной для разработчиков? Или я упускаю суть? Пожалуйста, дайте мне знать.

Документация о firebase firestore с flutter: https://firebase.flutter.dev/docs/firestore/usage

Комментарии:

1. Похоже, что улучшенная обработка исключений предусмотрена в дорожной карте FlutterFire: «Мы планируем предоставить общедоступный FirebaseException класс, который должен фильтровать все ошибки, связанные с Firebase, для каждой платформы». Репозиторий firebaseextended / flutterfire — лучшее место для продолжения этой работы.