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

Geolocation.requestPermissions浏览器未实现,不用await为何无法捕获错误?

问题原因解析

Geolocation.requestPermissions()方法返回的是Promise对象,这是异步操作的标准返回类型,这就是两种写法差异的核心原因:

  • 不用await时,同步的try/catch只能捕获当前执行栈里的同步错误。调用方法后立即得到一个Promise,方法内部的错误会以Promise rejection的形式在后续事件循环中触发,同步的try/catch无法捕获这种异步错误,所以会出现未捕获的Promise rejection提示。

  • 添加await后,await会暂停异步函数的执行,直到Promise完成:

    • 若Promise成功(resolve),则返回结果;
    • 若Promise失败(reject),则会抛出一个异常,这个异常会被当前try/catch块捕获——因为await把异步的Promise rejection转换成了同步可捕获的错误。

结合你的代码来看:
第一个写法里,const stuff = Geolocation.requestPermissions()只是获取了Promise对象,方法内部的异步错误不会进入同步try/catch的捕获范围;第二个写法用await后,异步错误被转化为可被try/catch捕获的异常,所以错误能被正常处理。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:44:56