因此,来自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中将异步异常传递给堆栈?!
答案 0 :(得分:0)
try
函数中的catch
-main
块不会等待异步init
函数完成。因此,init
完成后,将不再捕获其异常。
您可以通过制作main
async
并使用await init();
来解决此问题,也可以使用Future.catchError
在返回的Future
上直接注册错误回调