尽管人们总是努力创建没有 Bug 的应用程序,但 Bug 肯定会时不时地出现。由于有 Bug 的应用程序会导致用户和客户不满意,因此了解用户遇到 Bug 的频率以及 Bug 发生的位置非常重要。这样,你就可以优先处理影响最大的 Bug 并着手修复它们。

你如何确定用户遇到 Bug 的频率?每当发生错误时,创建一个包含错误及其相关堆栈跟踪的报告。然后你可以将报告发送到错误跟踪服务,例如 BugsnagDatadogFirebase CrashlyticsRollbar 或 Sentry。

错误跟踪服务会汇总用户遇到的所有崩溃,并将它们分组。这使你能够了解应用程序崩溃的频率以及用户遇到问题的地点。

在本代码示例中,你将学习如何使用以下步骤向 Sentry 崩溃报告服务报告错误

  1. 从 Sentry 获取 DSN。
  2. 导入 Flutter Sentry 软件包
  3. 初始化 Sentry SDK
  4. 以编程方式捕获错误

1. 从 Sentry 获取 DSN

#

在向 Sentry 报告错误之前,你需要一个“DSN”来唯一标识你的应用与 Sentry.io 服务。

要获取 DSN,请使用以下步骤

  1. 创建 Sentry 帐户.
  2. 登录帐户。
  3. 创建一个新的 Flutter 项目。
  4. 复制包含 DSN 的代码片段。

2. 导入 Sentry 软件包

#

sentry_flutter 软件包导入到应用程序中。Sentry 软件包使向 Sentry 错误跟踪服务发送错误报告变得更容易。

要将 sentry_flutter 软件包添加为依赖项,请运行 flutter pub add

flutter pub add sentry_flutter

3. 初始化 Sentry SDK

#

初始化 SDK 以自动捕获不同的未处理错误

Dart
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await SentryFlutter.init(
    (options) => options.dsn = 'https://example@sentry.io/example',
    appRunner: () => runApp(const MyApp()),
  );
}

或者,你可以使用 dart-define 标签将 DSN 传递给 Flutter

sh
--dart-define SENTRY_DSN=https://example@sentry.io/example

这能给我带来什么?

#

这就是 Sentry 在 Dart 和原生层捕获未处理错误所需的所有内容。
这包括 iOS 上的 Swift、Objective-C、C 和 C++,以及 Android 上的 Java、Kotlin、C 和 C++。

4. 以编程方式捕获错误

#

除了 Sentry 通过导入和初始化 SDK 自动生成的错误报告之外,你还可以使用 API 向 Sentry 报告错误

Dart
await Sentry.captureException(exception, stackTrace: stackTrace);

有关更多信息,请参阅 pub.dev 上的 Sentry API 文档。

了解更多

#

有关使用 Sentry SDK 的大量文档可以在 Sentry 网站上找到。

完整示例

#

要查看工作示例,请参阅 Sentry Flutter 示例应用程序。