向服务报告错误
尽管人们总是试图创建无错误的应用程序,但错误肯定会不时出现。由于有错误的应用程序会导致用户和客户不满意,因此了解用户遇到错误的频率以及错误发生的位置非常重要。这样,您可以优先处理影响最大的错误并努力修复它们。
您如何确定用户遇到错误的频率?每当发生错误时,创建一个包含发生的错误和相关堆栈跟踪的报告。然后,您可以将报告发送到错误跟踪服务,例如Bugsnag、Datadog、Firebase Crashlytics、Rollbar或 Sentry。
错误跟踪服务会聚合用户遇到的所有崩溃并将其分组。这使您可以了解应用程序失败的频率以及用户遇到问题的部位。
在本食谱中,学习如何使用以下步骤向Sentry 崩溃报告服务报告错误:
- 从 Sentry 获取 DSN。
- 导入 Flutter Sentry 包
- 初始化 Sentry SDK
- 以编程方式捕获错误
1. 从 Sentry 获取 DSN
#在向 Sentry 报告错误之前,您需要一个“DSN”来使用 Sentry.io 服务唯一标识您的应用程序。
要获取 DSN,请执行以下步骤:
- 使用 Sentry 创建帐户。
- 登录帐户。
- 创建一个新的 Flutter 项目。
- 复制包含 DSN 的代码片段。
2. 导入 Sentry 包
#将sentry_flutter
包导入应用程序。sentry 包使将错误报告发送到 Sentry 错误跟踪服务更容易。
要添加 sentry_flutter
包作为依赖项,请运行 flutter pub add
:
flutter pub add sentry_flutter
3. 初始化 Sentry SDK
#初始化 SDK 以自动捕获不同的未处理错误:
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) => options.dsn = 'https://[email protected]/example',
appRunner: () => runApp(const MyApp()),
);
}
或者,您可以使用 dart-define
标签将 DSN 传递给 Flutter:
--dart-define SENTRY_DSN=https://[email protected]/example
这给了我什么?
#这就是 Sentry 捕获 Dart 和原生层中未处理错误所需的一切。这包括 iOS 上的 Swift、Objective-C、C 和 C++,以及 Android 上的 Java、Kotlin、C 和 C++。
4. 以编程方式捕获错误
#除了导入和初始化 SDK 后 Sentry 生成的自动错误报告外,您还可以使用 API 将错误报告给 Sentry:
await Sentry.captureException(exception, stackTrace: stackTrace);
有关更多信息,请参阅 pub.dev 上的Sentry API 文档。
了解更多
#有关使用 Sentry SDK 的大量文档可在Sentry 网站 上找到。
完整示例
#要查看工作示例,请参阅Sentry flutter 示例 应用程序。
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。