如何检查功能是否已启用?是否只有捕获指定异常这一种途径?
功能启用状态检查 vs 异常捕获
当然可以主动检查功能是否已启用,并非只能依赖捕获FeatureNotEnabledException或FeatureNotSupportedException异常。
以你提到的位置服务场景为例:
- 可以通过平台提供的API主动查询功能状态:比如Android里用
LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)判断GPS是否开启;iOS中调用CLLocationManager.locationServicesEnabled()就能知晓系统位置服务的启用状态。提前做检查,就能在执行核心操作前引导用户开启对应功能(比如跳转至设置页),不用等异常抛出再处理。 - 主动检查的核心优势是提升用户体验,避免用户遭遇无预期的错误提示;但异常捕获依然是必要的兜底手段——毕竟从检查状态到执行操作的间隙,用户可能手动关闭了功能,这时候捕获异常能防止程序崩溃。
最优方案是:先主动检查功能启用状态,同时保留异常捕获作为兜底,既保证体验流畅,也能应对突发状态变化。
内容的提问来源于stack exchange,提问作者Pavel Voronin
相关产品推荐
相关产品推荐

