You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Maui应用仅向Sentry上报致命异常配置问题求助

问题原因及解决方案

核心问题

你遇到的问题根源有三个:

  1. 手动捕获异常的默认级别不是Fatal:通过CaptureException捕获的异常,默认级别是Error而非Fatal,所以你的SetBeforeSend逻辑会把这些异常全部过滤,导致无上报。
  2. ConfigureScope使用方式错误:单独调用ConfigureScope仅修改当前线程的全局作用域,若后续CaptureException不在同一上下文(比如异步场景),设置的级别不会生效。
  3. 混淆了DiagnosticLevel的作用:options.DiagnosticLevel = SentryLevel.Fatal是控制Sentry SDK自身的日志输出级别(仅打印SDK内部致命日志),和上报事件的级别过滤无关,这个设置对你的需求没有帮助。

解决方案

1. 正确设置手动捕获异常的级别

用WithScope包裹捕获逻辑,创建临时作用域确保级别仅作用于当前事件:

SentrySdk.WithScope(scope =>
{
    scope.Level = SentryLevel.Fatal;
    SentrySdk.CaptureException(ex);
});

2. 保留原有SetBeforeSend逻辑

你的SetBeforeSend过滤逻辑本身是正确的,配合上面的WithScope使用,即可实现仅上报标记为Fatal的手动异常,以及Sentry自动捕获的崩溃级异常(默认级别为Fatal)。

3. 确认自动崩溃捕获生效

MAUI中Sentry默认会自动捕获未处理的致命异常(如AppDomain未处理异常、未观察到的Task异常),这些异常级别默认是Fatal,会被你的过滤逻辑保留上报。你已开启IsGlobalModeEnabled = true,这部分无需额外调整。

验证方法

  • 手动抛出异常并通过上述代码捕获上报,查看Sentry后台是否收到事件;
  • 触发未处理的崩溃(比如在按钮点击事件中直接抛出未捕获异常),确认崩溃事件能正常上报。

内容的提问来源于stack exchange,提问作者Anders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:06:01