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

VS2019/VS2022调试Xamarin项目如何避免命中Xamarin.Essentials.FeatureNotSupportedException

解决方案

方案1:使用内置传感器可用性检测(最优)

Xamarin.Essentials 所有传感器类均提供了 IsSupported 属性,可在调用启动逻辑前直接检测传感器是否可用,完全避免异常抛出:

if (Barometer.IsSupported)
{
    Barometer.Start(SensorSpeed.Game);
}
else
{
    // 设备不支持传感器,直接走失败逻辑
}

该方案从根源上消除了异常触发场景,不需要额外调整调试配置。

方案2:调整调试器异常设置规则

如果业务场景必须保留try-catch逻辑,可通过配置调试规则实现仅该类已捕获异常不中断:

  • 打开VS异常设置窗口:路径为「调试>窗口>异常设置」,或使用快捷键 Ctrl+Alt+E
  • 点击窗口顶部的「添加异常」按钮,输入完全限定类名 Xamarin.Essentials.FeatureNotSupportedException 并确认添加
  • 右键点击新增的异常项,勾选「其他操作>仅当未由用户代码处理时中断」选项
  • 取消该异常项「引发时中断」的勾选状态

配置完成后,只有未被代码捕获的FeatureNotSupportedException才会触发调试中断,已捕获的异常不会中断调试,也不会影响其他类型异常的调试逻辑。

方案3:调试器忽略属性适配(兼容存在异常识别bug的VS版本)

如果上述配置后依旧触发中断,可给包含这段try-catch逻辑的方法添加调试器忽略属性:

[DebuggerNonUserCode]
public void TryStartBarometer()
{
    try
    {
        Barometer.Start(SensorSpeed.Game);
    }      
    catch
    {
        //failed
    }
}

[DebuggerNonUserCode]属性仅在调试阶段生效,会让调试器跳过该方法内的异常中断检测,不会影响Release版本的运行逻辑,也不会干扰其他代码的异常调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:24:03