Flutter 颤振验证异常处理

Flutter 颤振验证异常处理,flutter,authentication,Flutter,Authentication,我有以下代码用于创建用户并返回翻译后的错误消息 我知道这是个老问题,但我仍在努力解决。我以科伦丁·霍代尔最多的得票支持这一做法,但这对我来说并不奏效。我的Try-Catch不是捕获错误,而是进入Platformexception onPressed: () async { try { await auth.createUserWithEmailAndPassword(

我有以下代码用于创建用户并返回翻译后的错误消息

我知道这是个老问题,但我仍在努力解决。我以科伦丁·霍代尔最多的得票支持这一做法,但这对我来说并不奏效。我的Try-Catch不是捕获错误,而是进入Platformexception

onPressed: () async {
                    try {
                      await auth.createUserWithEmailAndPassword(
                          email: _email, password: _password);
                    } catch (error) {
                      _error = true;
                      switch (error.code) {
                        case ("email-already-in-use"):
                          _emessage =
                              "Du hast bereits einen Account mit der angegebenen Email-Adresse.";
                          break;
                        case ("invalid-email"):
                          _emessage = "Ungültige Email-Adresse.";
                          break;
                        case ("operation-not-allowed"):
                          _emessage =
                              "Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es zu einem späteren Zeitpunkt nocheinmal.";
                          break;
                        case ("weak-password"):
                          _emessage = "Passwort zu kurz";
                          break;
                        default:
                          _emessage =
                              "Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es zu einem späteren Zeitpunkt nocheinmal.";
                      }
                    }
我面临的问题是,我的try-catch实际上并没有捕获错误,而是进入了Platformexception。我的捕获块甚至没有执行。我做错了什么?提前感谢。

请不要使用
}捕获(错误){
尝试使用:

          } on auth.FirebaseAuthException catch (e) {
            print("FirebaseAuthException code: ${e.code}");
          } on PlatformException catch (e) {
            print("PlatformException code: ${e.code}");
          }
查看他们是否捕获了任何内容。同时检查捕获是否正在等待。create…call to finish(看不出为什么不会)

如果仍然没有乐趣,请尝试在
auth.createUserWithEmailAndPassword(电子邮件:\u电子邮件,密码:\u密码)
之后用
.catchError()
语句替换try-catch代码,而不是
}catch(错误){
尝试使用:

          } on auth.FirebaseAuthException catch (e) {
            print("FirebaseAuthException code: ${e.code}");
          } on PlatformException catch (e) {
            print("PlatformException code: ${e.code}");
          }
查看他们是否捕获了任何内容。同时检查捕获是否正在等待。create…call to finish(看不出为什么不会)


如果仍然没有乐趣,请尝试在
auth.createUserWithEmailAndPassword(电子邮件:\u电子邮件,密码:\u密码)之后用
.catchError()
语句替换try-catch代码

通过查看代码,我猜您正在使用firebase进行此操作。据我所知,如果发生错误,firebase本身将返回错误。此外,您可以声明函数并进行登录,而不是使用这样的代码块。这可能会有帮助,因为我在使用代码l时没有收到任何错误例如:

Future signInWithEmailAndPassword(String email, String password)
async {
  try{
AuthResult result= await _auth.signInWithEmailAndPassword(email: email.trim(), password: password.trim());
FirebaseUser user = result.user;
}catch(e){
print(e.toString());
return null;
}
}


我建议你参考Net Ninja youtube频道,特别是firebase应用程序构建教程的播放列表。你可以获得链接。我建议这是因为我从同一播放列表中了解到的。通过查看代码,我猜你正在使用firebase进行此操作。据我所知,firebase本身将返回一个错误如果发生错误。此外,您可以声明函数并进行登录,而不是使用这样的代码块。这可能会有所帮助,因为我在使用类似以下代码时没有收到任何错误:

Future signInWithEmailAndPassword(String email, String password)
async {
  try{
AuthResult result= await _auth.signInWithEmailAndPassword(email: email.trim(), password: password.trim());
FirebaseUser user = result.user;
}catch(e){
print(e.toString());
return null;
}
}


我建议您参考Net Ninja youtube频道,特别是firebase应用程序构建教程的播放列表。您可以获得链接。我建议您这样做是因为我从同一播放列表中了解到了这一点。希望这对您有所帮助。

谢谢大家的帮助。我刚刚发现了以下内容:


似乎是VSCode问题。如果我在VSCode调试器上按“继续”,异常将按预期处理。

谢谢大家的帮助。我刚刚发现:


似乎是VSCode问题。如果我在VSCode调试器上按continue,异常将按预期处理。

是的,我提出了该问题。这实际上不是VSCode问题……当调试器中勾选Uncaught exceptions(未捕获异常)框时,VSCode非常特殊。这是FlatterFire库在抛出错误的方式上的问题。希望他们会在某个时候修复。你应该更具体地说明你所说的“平台异常”,我假设这是你的应用程序中显示的错误,而不是VSCode。是的,我提出了这个问题。这实际上不是VSCode问题…VSCode只是在调试器中勾选“未捕获异常”框时非常特殊。这是一个错误FlatterFire库抛出错误的方式存在问题。希望他们能在某个时候修复。您应该更具体地说明“平台异常”的含义,我认为这是应用程序中显示的错误,而不是VSCode