当前位置: 首页 > 知识库问答 >
问题:

FirebaseAuthException捕捉到错误,但应用程序仍停止工作

劳麒
2023-03-14

我正在登录/注册,当我尝试使用应用程序停止的同一封电子邮件注册时,我添加了这一行

case "email-already-exists":
            errorMessage = "The email is already being used.";
            break;

问题是,它仍然不工作,消息显示出来,但应用程序仍然停止工作。(但信息不同。)

这是我用于身份验证的代码

void signUp(String email, String password) async {
    if (_formKey.currentState!.validate()) {
      try {
        await _auth
            .createUserWithEmailAndPassword(email: email, password: password)
            .then((value) => {postDetailsToFirestore()})
            .catchError((e) {
          _toastInfo(e!.message);
        });
      } on FirebaseAuthException catch (error) {
        switch (error.code) {
          case "invalid-email":
            errorMessage = "Your email address appears to be malformed.";
            break;
          case "wrong-password":
            errorMessage = "Your password is wrong.";
            break;
          case "user-not-found":
            errorMessage = "User with this email doesn't exist.";
            break;
          case "user-disabled":
            errorMessage = "User with this email has been disabled.";
            break;
          case "too-many-requests":
            errorMessage = "Too many requests";
            break;
          case "operation-not-allowed":
            errorMessage = "Signing in with Email and Password is not enabled.";
            break;
          case "email-already-exists":
            errorMessage = "The email is already being used.";
            break;
          default:
            errorMessage = "An undefined Error happened.";
        }
        _toastInfo(errorMessage!);
        print(error.code);
      }
    }
  }

共有2个答案

祁和通
2023-03-14

错误不在“FirebaseAuthException”上,但正如错误消息告诉您的:“Future.catchError的错误处理程序…”

 await _auth
            .createUserWithEmailAndPassword(email: email, password: password)
            .then((value) => {postDetailsToFirestore()})
            .catchError((e) {
          _toastInfo(e!.message);
        });

2事情没有做好。

  1. 您同时使用wait和then,这不是处理异步函数的正确方式。在这种情况下,它们都做同样的事情,这不好。阅读此处了解有关异步函数的更多信息-这里是官方Flutter文档的链接

这是我处理UserAuth的方式

  /// [Creating account using Email & Password]
  Future<User?> createAccount(String email, String password) async {
    try {
      UserCredential userCredential = await FirebaseAuth.instance
          .createUserWithEmailAndPassword(email: email, password: password);
      return userCredential.user;
    } on FirebaseAuthException catch (e) {
      // Here you manage the errors
      return null;
    }
  }
许法
2023-03-14

错误可能是由以下代码引起的:

.catchError((e) {
          _toastInfo(e!.message);
        });

。catchError()返回类型为future的future

 类似资料:
  • 是否有一种干净的方法来检测spring启动应用程序何时停止,并在停止之前执行一些操作?一种停止服务的CommandLineRunner 提前谢谢

  • 问题内容: 我听说捕捞被认为是不好的作法。我当前正在加载一个不能保证在PATH上的.dll,并希望在不存在的情况下切换到用户配置的位置。 有更好的方法吗?还是在这里接受是可以接受的? 问题答案: 除了提供有关如何从技术上解决问题的建议以外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。 让我们从澄清什么是类开始。 在Java中,将引发错误和异常(它们是主要类型)。通过使用关键字可以完成上

  • 我定义了一个自定义错误处理程序,它捕获所有异常并将其保存到日志中。现在,如果我在mysqli查询中出现语法错误,例如打字错误,页面将完全停止加载。没有引发异常,因此不会触发错误处理程序,也不会记录任何内容。 这正常吗?我是否应该检查PHP设置来修复此问题,以便任何mysqli查询错误都会引发异常? (如果查询返回0个结果,我不希望引发异常-仅当它由于键入错误或查询结构中的其他错误而出错时) 查询示

  • 我正在开发一个django应用程序,它可以与几个Amazon Web服务进行通信。 到目前为止,我在处理和捕获boto3客户端抛出的异常方面遇到了困难。我正在做的事情似乎不必要地单调乏味: 例子: 如果令牌坏了,这可能会抛出一个。 可能会抛出一个。 首先,我在代码中的任何地方都找不到这些错误,所以它们可能是在某个地方生成的。一句话:我不能像往常一样导入和捕获它。 其次,我发现了一种方法来捕获错误这

  • 单击关闭程序后,浏览器中出现另一个错误: 详细的编译器输出如下所示: C:\程序文件(x86)\IIS Express>D:_myurl\bin\roslyn\csc.exe/T:Library/utf8output/nostdlib+/R:“C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll”/R:“C:\Windows\Micr

  • 在我的Android Studio模拟器(Nexus_7_API_21)中,每当我尝试运行它时,我的应用程序就会停止工作。我启动了LogCat,我认为错误是由于空指针引用,但我不知道问题在哪里。 这是我的。java主文件。