在 javascript 中捕获 proximity api(如 proximitysensor)的异步错误,核心在于使用 try...catch 包裹实例化代码,并配合 .catch() 处理 promise 拒绝。由于该 api 可能因硬件缺失、权限被拒或浏览器不支持而失败,必须对构造函数调用和后续的 start() 方法分别进行异常拦截。

new ProximitySensor() 构造时抛出什么错误
当浏览器不支持该 API 或用户未授予传感器权限时,new ProximitySensor() 会直接抛出同步异常。此时需要检查 DOMException 的类型,通常表现为 NotSupportedError 或 SecurityError。若构造成功但设备不可用,后续调用 start() 才会触发异步错误。

const sensor = new ProximitySensor();
sensor.start().then(() => {
console.log('Sensor started');
}).catch(err => {
console.error('Start failed:', err.name, err.message);
});
start() 方法拒绝时返回什么状态
如果传感器启动失败(例如设备忙或权限在启动后被撤销),start() 返回的 Promise 会被拒绝。此时捕获到的错误对象包含 name 属性,用于区分是 NotAllowedError 还是其他系统级错误。开发者应根据错误名称决定是重试还是提示用户。

sensor.addEventListener('reading', () => {
console.log(sensor.distance);
});
sensor.onerror = (event) => {
console.error('Sensor error:', event.error.name);
};
sensor.start();
传感器读取中断时的具体错误类型是什么
当传感器在运行过程中因硬件断开或权限变更导致读取中断时,onerror 事件会被触发。此时 event.error 是一个 SensorErrorEvent 对象,其 name 属性通常为 ReadError 或 SecurityError。这与构造或启动阶段的错误不同,属于运行时动态错误,需单独监听处理。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











