gpt4 book ai didi

exception - Dart 中的 Java 'throws' 关键字

转载 作者:行者123 更新时间:2023-12-03 03:37:58 25 4
gpt4 key购买 nike

我来自 Java 背景,在那里我使用 throws 关键字将异常引导到调用另一个方法的方法中。我怎么能做到这一点?

方法调用:

  void _updateCurrentUserEmail() async {
await FirebaseAuth.instance
.currentUser()
.then((FirebaseUser user) {
_email = user.email;
});
}

怎么称呼:
try {
_updateCurrentUserEmail();
} on Exception {
return errorScreen("No User Signed In!", barActions);
}

但似乎 Exception 没有被捕获,因为我仍然收到 NoSuchMethodException 并且没有显示 errorScreen 。

最佳答案

当您正确使用 try/catch 时,异常来自您没有等待的异步函数。

try/catch 只捕获该块内抛出的异常。但既然你写道:

try {
doSomethingAsyncThatWillTrowLater();
} catch (e) {

}

然后将异步方法抛出的异常抛出 try的主体之外(如 try 在异步函数之前完成),因此没有被捕获。

您的解决方案是使用 await :

try {
await doSomethingAsyncThatWillTrowLater();
} catch (e) {

}

或使用 Future.catchError/ Future.then :

doSomethingAsyncThatWillTrowLater().catchError((error) {
print('Error: $error');
});

关于exception - Dart 中的 Java 'throws' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59458734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com