如何从catchError中的Future.error获取值?

时间:2020-08-25 11:06:00

标签: flutter dart

void main() {
  foo().catchError((error) {
    if (error is Future) {
      error.then((value) => print('value = $value'));
    }
  });
}

Future<void> foo() async {
  throw Future.error('FooError');
}

该错误被捕获在catchError内部,但是在该示例中,我无法检索到Future.error的值FooError

2 个答案:

答案 0 :(得分:0)

那是Future.error,所以您必须在上面再次使用catchError

void main() {
  foo().catchError((error) {
    if (error is Future) {
      error.catchError((error) => print(error)); // prints 'FooError'
    }
  });
}

Future<void> foo() async {
  throw Future.error('FooError');
}

答案 1 :(得分:0)

您只是没有,这样做是没有意义的。

您可以抛出错误:

 useBeforeunload(() => "Are you sure to close this tab?");

或者如果出于某种原因而不方便,您可以使用void main() { foo().catchError((error) { print('error = $error'); }); } Future<void> foo() async { throw 'FooError'; } 创建一个已经存在错误的Future:

Future.error

但是实际上void main() { foo().catchError((error) { print('error = $error'); }); } Future<void> foo() { return Future.error('FooError'); } throw是多余的,没有用。