哨兵没有在颤振中报告错误



我的哨兵设置是这样的:

void main() => runZonedGuarded(() {
runApp(MyApp());
}, (Object error, StackTrace stackTrace) {
reportError(error, stackTrace);
});

及相关功能

final SentryClient sentry = new SentryClient(dsn: '<my-dsn>');

Future<void> reportError(dynamic error, dynamic stackTrace) async {
sentry.captureException(
exception: error,
stackTrace: stackTrace,
);
}

我在小部件的构建方法中添加了throw Exception("my-error"),但我看不到 Sentry Web 控制台上显示的错误。

我创建了一个文件来抛出异常和哨兵捕获,我确实看到哨兵正在报告错误。

runZonedGuarded一定有问题.

在经历了许多似乎无法正常工作的哨兵设置之后,我得出了这个有效的设置:

Future<void> main() async {
final sentry = Sentry.SentryClient(Sentry.SentryOptions(dsn: '[Add dsn URI here]'));
runZonedGuarded(() {
WidgetsFlutterBinding.ensureInitialized();
FlutterError.onError = (FlutterErrorDetails errorDetails) {
sentry.captureException(
errorDetails.exception,
stackTrace: errorDetails.stack,
);
};
runApp(MyApp());
}, (Object error, StackTrace stackTrace) {
sentry.captureException(
error,
stackTrace: stackTrace,
);
});
}

如果您使用的是免费版本,并且未超过每月配额,请检查您的哨兵仪表板。如果是这种情况,您将不会收到任何事件。

  1. 您必须使 func 异步才能将错误发送到哨兵控制台
  2. 请务必为移动应用导入此文件:
    import 'package:sentry/io_client.dart';
    例如:

主飞镖

import 'package:sentry/io_client.dart';
final SentryClient sentry = new SentryClient(dsn: YOUR_DSN);
main() async {
try {
throw new StateError('This is a Dart exception.');
} catch(error, stackTrace) {
await sentry.captureException(
exception: error,
stackTrace: stackTrace,
);
}
}

主屏幕

floatingActionButton: FloatingActionButton(
onPressed: () async{
throw new StateError('This is a Dart exception.');
},

顺便说一下,在发布版本中,它将发送每个异常,因为在调试中 颤振不会捕获控制台中显示的每个错误,为了简化它,您可以使用以下软件包之一:

  • https://pub.dev/packages/catcher
  • https://pub.dev/packages/flutter_sentry

相关内容

  • 没有找到相关文章

最新更新