在Dart中将异常传递到堆栈上

时间:2019-05-17 23:20:25

标签: dart

因此,来自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中将异步异常传递给堆栈?!

1 个答案:

答案 0 :(得分:0)

try函数中的catch-main块不会等待异步init函数完成。因此,init完成后,将不再捕获其异常。

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