如何捕获回调抛出的异常?

iDe*_*ode 5 dart firebase firebase-authentication flutter

我用于firebase_auth电话号码验证。这是最少的代码。

Future<void> foo() async {
  await FirebaseAuth.instance.verifyPhoneNumber(
    verificationFailed: (_) {
      throw Exception('Foo'); // It throws an exception.
    },
    phoneNumber: '+1650',
    verificationCompleted: (_) {},
    codeSent: (_, __) {},
    codeAutoRetrievalTimeout: (_) {},
  );
}
Run Code Online (Sandbox Code Playgroud)

我像这样调用上面的函数

void main() {
  foo().catchError(print); // But this code fails to catch it. 
}
Run Code Online (Sandbox Code Playgroud)

catchError似乎没有发现错误,我遇到了:

[VERBOSE-2:shell.cc(93)] Dart 未处理的异常:异常:foo

那么,我如何正确捕获该异常呢?