runCatching<R> method
FutureOr<R?>
runCatching<R>(
- FutureOr<
R> block(), { - FutureOr<
R?> onSuccess(- R data
- FutureOr<
R?> onFailure(- Object e,
- StackTrace s
- dynamic ignoreSkipError = true,
ignoreSkipError
true: SkipError will not trigger onFailure
when true
Implementation
FutureOr<R?> runCatching<R>(
FutureOr<R> Function() block, {
FutureOr<R?> Function(R data)? onSuccess,
FutureOr<R?> Function(Object e, StackTrace s)? onFailure,
ignoreSkipError = true,
}) async {
try {
final data = block();
return data is Future<R>
? await data.then((e) => (onSuccess ?? (r) => r).call(e))
: (onSuccess ?? (r) => r).call(data);
} catch (e, s) {
if (ignoreSkipError && e is SkipError) return null;
return onFailure?.call(e, s);
}
}