gpt4 book ai didi

dart - 在 Dart 中将异常从异步方法向上传递到同步方法

转载 作者:行者123 更新时间:2023-12-03 04:01:21 28 4
gpt4 key购买 nike

因此,来自 Javascript 世界,我可以处理抛出的异常,无论在堆栈的深处。在 Dart 中做同样的事情是行不通的。我不确定如何向上传递异常,以便在堆栈的根部进行处理。

willThrow() async {
throw Exception('Im an exception');
}

init() async {
final illNeverExist = await willThrow();
print(illNeverExist);
}

main() {
try {
init();
} catch(err) {
print(err);
}
}

^^^ 这完全适用于 javascript。

在“init”中,即使我将其包装在 try catch 中并抛出该错误,我也总是会遇到未捕获的异常。

init() async {
try {
final illNeverExist = await willThrow();
print(illNeverExist);
} catch(err) {
throw err
}
}

如何在 dart 中将异步异常向上传递到堆栈?!

最佳答案

main 函数中的 try-catch block 不会等待异步 init 函数执行完全的。因此,当 init 完成时,将不再捕获其异常。

您可以通过制作 main async 并使用 await init(); 来解决这个问题,或者您可以使用 Future.catchError 直接在返回的 Future 上注册错误回调。

关于dart - 在 Dart 中将异常从异步方法向上传递到同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56194668/

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