runCatching<R> method

FutureOr<R?> runCatching<R>(
  1. FutureOr<R> block(), {
  2. void onSuccess(
    1. R data
    )?,
  3. void onFailure(
    1. Object e,
    2. StackTrace s
    )?,
})
inherited

Implementation

FutureOr<R?> runCatching<R>(
  FutureOr<R> Function() block, {
  void Function(R data)? onSuccess,
  void Function(Object e, StackTrace s)? onFailure,
}) async {
  try {
    final data = block();
    if (data is Future<R>) {
      await data.then((_) => onSuccess?.call(_));
    } else {
      onSuccess?.call(data);
    }
    return data;
  } catch (e, s) {
    onFailure?.call(e, s);
    return null;
  }
}