Dart中onError和CatchError之间有什么区别?

22

我唯一看到的区别是onError也会将Stacktrace作为参数传递。

在哪些情况下您会选择其中之一?


3
该链接未提及任何差异。 - John Wang
2个回答

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});

onError 实际上是一个更加精确类型的 catchError

因此,使用 onError 可以捕获特定的错误类型,并指定正确类型的错误处理函数,而不仅仅是所有类型和只有一个 Function 的 catchError


5
扩展答案:.onError<E extends Object> 相当于 on Exception catch (e) 语法,而 .catchError 则是整个 try-catch 中的 catch (e) 声明。 - Gustavo Rodrigues

2
onError中,错误将被视为未捕获的异常,而catchError则不会。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接