The Wayback Machine - https://web.archive.org/web/20200906072239/https://github.com/flutter/sentry
Skip to content
master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md


Sentry SDK for Dart

Build Status pub package likes popularity pub points

Use this library in your Dart programs (Flutter for mobile, Flutter for web, command-line, and AngularDart) to report errors thrown by your program to https://sentry.io error tracking service.

Versions

Versions 4.0.0 and higher support Flutter (mobile, web, desktop), command-line/server Dart VM, and AngularDart.

Versions below 4.0.0 are deprecated.

Usage

Sign up for a Sentry.io account and get a DSN at http://sentry.io.

Add sentry dependency to your pubspec.yaml:

dependencies:
  sentry: ">=4.0.0 <5.0.0"

In your Dart code, import package:sentry/sentry.dart and create a SentryClient using the DSN issued by Sentry.io:

import 'package:sentry/sentry.dart';

final SentryClient sentry = new SentryClient(dsn: YOUR_DSN);

In an exception handler, call captureException():

main() async {
  try {
    doSomethingThatMightThrowAnError();
  } catch(error, stackTrace) {
    await sentry.captureException(
      exception: error,
      stackTrace: stackTrace,
    );
  }
}

Tips for catching errors

  • Use a try/catch block, like in the example above.

  • Create a Zone with an error handler, e.g. using runZonedGuarded.

    var sentry = SentryClient(dsn: "https://...");
    // Run the whole app in a zone to capture all uncaught errors.
    runZonedGuarded(
      () => runApp(MyApp()),
      (error, stackTrace) {
        try {
          sentry.captureException(
            exception: error,
            stackTrace: stackTrace,
          );
          print('Error sent to sentry.io: $error');
        } catch (e) {
          print('Sending report to sentry.io failed: $e');
          print('Original error: $error');
        }
      },
    );
  • For Flutter-specific errors (such as layout failures), use FlutterError.onError. For example:

    var sentry = SentryClient(dsn: "https://...");
    FlutterError.onError = (details, {bool forceReport = false}) {
      try {
        sentry.captureException(
          exception: details.exception,
          stackTrace: details.stack,
        );
      } catch (e) {
        print('Sending report to sentry.io failed: $e');
      } finally {
        // Also use Flutter's pretty error logging to the device's console.
        FlutterError.dumpErrorToConsole(details, forceReport: forceReport);
      }
    };
  • Use Isolate.current.addErrorListener to capture uncaught errors in the root zone.

Found a bug?

Please file it at https://github.com/flutter/flutter/issues/new

You can’t perform that action at this time.