Dart中onError和CatchError的区别在哪里

Max*_*omp 23 dart flutter

我看到的唯一区别是 onError 还获取 Stacktrace 作为参数传递。在什么情况下你会选择另一个?

dav*_*lin 19

Future<T> onError<E extends Object>(FutureOr<T> Function(E, StackTrace) handleError, {bool Function(E)? test})

Future<T> catchError(Function onError, {bool Function(Object error)? test});
Run Code Online (Sandbox Code Playgroud)

onError实际上是更精确键入的版本catchError

因此,onError您可以捕获特定的错误类型并指定正确类型的错误处理函数,而不是所有类型和仅带有catchError.

  • 扩展答案:“.onError&lt;E extends Object&gt;”相当于子句“on Exception catch (e)”语法,而“.catchError”将是 try- 的整个“catch (e)”声明抓住。 (5认同)