capture<T> method
Future<T?>
capture<
T>( - Future<T> action(), {
- required String category,
- bool fatal = false,
- String? message,
- Map<String, String>? metadata,
- FutureOr<void> onError(
- Object error,
- StackTrace stackTrace
)?,
- FutureOr<void> onFinally()?,
- bool rethrowError = false,
})
Implementation
Future<T?> capture<T>(
Future<T> Function() action, {
required String category,
bool fatal = false,
String? message,
Map<String, String>? metadata,
FutureOr<void> Function(Object error, StackTrace stackTrace)? onError,
FutureOr<void> Function()? onFinally,
bool rethrowError = false,
}) async {
try {
return await action();
} catch (error, stackTrace) {
await report(
error,
stackTrace,
category: category,
fatal: fatal,
message: message,
metadata: metadata,
);
await onError?.call(error, stackTrace);
if (rethrowError) {
rethrow;
}
return null;
} finally {
await onFinally?.call();
}
}