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

如何避免AbortSignal.timeout导致fetch超时触发未捕获异常?

解决Fetch超时未捕获异常的最简方案

完全可行,你只需要给fetch返回的Promise添加catch处理,精准识别并忽略超时触发的DOMException即可,不需要改动原有的超时方案:

fetch("/test", { signal: AbortSignal.timeout(2000) })
  .then(response => {
    // 这里处理正常响应逻辑
  })
  .catch(error => {
    // 仅忽略超时异常,其他类型错误仍正常抛出或处理
    if (!(error instanceof DOMException && error.name === 'TimeoutError')) {
      throw error;
    }
  });

原理很简单:AbortSignal.timeout()触发的超时错误是DOMException实例,且它的name属性固定为TimeoutError。通过在catch里做这个判断,就能只过滤掉超时导致的未捕获异常,其他请求错误(比如网络错误、404等)依然可以正常处理或抛出,不会影响其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:32:34