sentry 6.0.0-beta.3 sentry: ^6.0.0-beta.3 copied to clipboard
A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead.
Sentry SDK for Dart #
package | build | pub | likes | popularity | pub points |
---|---|---|---|---|---|
sentry |
Pure Dart SDK used by any Dart application like AngularDart, CLI and Server.
Flutter
For Flutter applications there's sentry_flutter
which builds on top of this package.
That will give you native crash support (for Android and iOS), release health, offline caching and more.
Usage
-
Sign up for a Sentry.io account and get a DSN at http://sentry.io.
-
Follow the installing instructions on pub.dev.
-
Initialize the Sentry SDK using the DSN issued by Sentry.io:
import 'package:sentry/sentry.dart';
Future<void> main() async {
await Sentry.init(
(options) {
options.dsn = 'https://example@sentry.io/example';
},
appRunner: initApp, // Init your App.
);
}
void initApp() {
// your app code
}
Or, if you want to run your app in your own error zone [runZonedGuarded]:
import 'dart:async';
import 'package:sentry/sentry.dart';
Future<void> main() async {
runZonedGuarded(() async {
await Sentry.init(
(options) {
options.dsn = 'https://example@sentry.io/example';
},
);
// Init your App.
initApp();
}, (exception, stackTrace) async {
await Sentry.captureException(exception, stackTrace: stackTrace);
});
}
void initApp() {
// your app code
}
Breadcrumbs for HTTP Requests
The SentryHttpClient
can be used as a standalone client like this:
import 'package:sentry/sentry.dart';
var client = SentryHttpClient();
try {
var uriResponse = await client.post('https://example.com/whatsit/create',
body: {'name': 'doodle', 'color': 'blue'});
print(await client.get(uriResponse.bodyFields['uri']));
} finally {
client.close();
}
The SentryHttpClient
can also be used as a wrapper for your own
HTTP Client:
import 'package:sentry/sentry.dart';
import 'package:http/http.dart' as http;
final myClient = http.Client();
var client = SentryHttpClient(client: myClient);
try {
var uriResponse = await client.post('https://example.com/whatsit/create',
body: {'name': 'doodle', 'color': 'blue'});
print(await client.get(uriResponse.bodyFields['uri']));
} finally {
client.close();
}
Tips for catching errors
- Use a
try/catch
block. - Use a
catchError
block forFutures
, examples on dart.dev. - The SDK already runs your
callback
on an error handler, e.g. using runZonedGuarded, events caught by therunZonedGuarded
are captured automatically. - Current Isolate errors which is the equivalent of a main or UI thread, are captured automatically (Only for non-Web Apps).
- For your own
Isolates
, add an Error Listener and callSentry.captureException
.