trace<T> method

Future<T> trace<T>(
  1. String name,
  2. Future<T> body(
    1. DVSpan span
    ), {
  3. DVSpan? parent,
  4. DVTraceContext? context,
})

Runs body inside a span, ending it either way and recording a throw.

Implementation

Future<T> trace<T>(
  String name,
  Future<T> Function(DVSpan span) body, {
  DVSpan? parent,
  DVTraceContext? context,
}) async {
  final DVSpan span = startSpan(name, parent: parent, context: context);
  try {
    return await body(span);
  } on Object catch (error, stack) {
    span.recordError(error, stack);
    rethrow;
  } finally {
    span.end();
  }
}