#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 — лучшее место для продолжения этой работы.