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
相关产品推荐
相关产品推荐

