我唯一看到的区别是onError也会将Stacktrace作为参数传递。
在哪些情况下您会选择其中之一?
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
。
.onError<E extends Object>
相当于 on Exception catch (e)
语法,而 .catchError
则是整个 try-catch 中的 catch (e)
声明。 - Gustavo RodriguesonError
中,错误将被视为未捕获的异常,而catchError
则不会。