我有以下代码用于创建用户并返回翻译后的错误消息
我知道这是一个老问题,但我仍然在努力解决它。我遵循了 Corentin Houdayer 最多投票的方法,但它对我不起作用。我的 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。我的 catch 块甚至没有执行。我在这里做错了什么?提前致谢。
答案 0 :(得分:1)
代替 } catch (error) {
尝试使用:
} on auth.FirebaseAuthException catch (e) {
print("FirebaseAuthException code: ${e.code}");
} on PlatformException catch (e) {
print("PlatformException code: ${e.code}");
}
看看他们有没有抓到什么。还要检查 catch 是否真的在等待 .create... 调用完成(但不明白为什么不会)。
如果仍然不高兴,请尝试用 .catchError()
之后的 auth.createUserWithEmailAndPassword(email: _email, password: _password)
语句替换 try catch 代码
答案 1 :(得分:1)
通过查看代码,我猜您正在使用 firebase 进行此操作。根据我的知识 firebase,如果发生错误,它本身会返回错误。此外,您可以声明一个函数并进行登录,而不是使用这样的代码块。这可能会有所帮助,因为我在使用这样的代码时没有遇到任何错误:
const validationSchema= Yup.object({
custom_field: Yup.string().test(
"match",
"Custom validation enabled",
function () {
if (!shouldFormValidate) return true;
return false;
}
)
});
我建议您参考 The Net Ninja youtube 频道,尤其是 firebase 应用程序构建教程的播放列表。您可以获得链接 here。我建议这个原因是我从同一个播放列表中学到的。希望这有帮助
答案 2 :(得分:0)
谢谢大家的帮助。我刚刚发现了这个: https://github.com/FirebaseExtended/flutterfire/issues/3475
似乎是 VSCode 问题。如果我在 Vscode 调试器上按继续,则会按预期处理异常。