reportException static method

Future<void> reportException(
  1. Exception exception, {
  2. ErrorSeverityLevel severityLevel = ErrorSeverityLevel.warning,
  3. StackTrace? stackTrace,
})

Reports an Exception that was caught.

This can be called in catch blocks to report unexpected exceptions, that you want to track.

Method might throw Exception.

try {
  await jsonDecode("invalid/exception/json");
} on FormatException catch (e) {
  await Instrumentation.reportException(e,
      severityLevel: ErrorSeverityLevel.warning);
}

Implementation

static Future<void> reportException(Exception exception,
    {ErrorSeverityLevel severityLevel = ErrorSeverityLevel.warning,
    StackTrace? stackTrace}) async {
  try {
    final hed = {
      "rst": stackTrace?.toString(),
      "crt": DateUtils.convertDateTimeToLong(DateTime.now()),
      "env": 'Flutter',
      "em": exception.toString(),
    };

    final arguments = {
      "hed": jsonEncode(hed),
      "sev": severityLevel.index,
    };

    await channel.invokeMethod<void>('reportError', arguments);
  } on PlatformException catch (e) {
    throw Exception(e.details);
  }
}