我的哨兵设置如下:
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,
);
}
我在小部件的build方法中添加了throw Exception("my-error")
,但看不到Sentry Web控制台上显示的错误。
我创建了一个文件来引发异常和哨兵捕获,并且确实看到哨兵正在报告错误。
runZonedGuarded
一定有问题。
答案 0 :(得分:0)
import 'package:sentry/io_client.dart';
main.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.');
},
答案 1 :(得分:0)
通过发行版的方式,它将发送每个异常,因为在调试抖动中不会捕获控制台中显示的每个错误,为简化起见,您可以使用以下软件包之一:
答案 2 :(得分:0)
在哨兵控制面板中检查是否正在使用免费版本,以及是否未超过每月配额。如果是这种情况,您将不会收到任何事件。
答案 3 :(得分:0)
在进行许多似乎无法正常工作的Sentry设置后,我得出了一个可行的方法:
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,
);
});
}