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

Node.js中如何捕获Got模块抛出的GotError [HTTPError] 404 (Not Found)错误

Got模块HTTPError错误捕获方案

捕获失败原因

你所使用的try catch属于同步错误捕获语法,而当前示例中got以Promise链式方式调用,异步抛出的HTTPError无法传递到外层同步try catch块,因此捕获失败,需使用异步错误对应的捕获方案。

方案1:在Promise链式调用后追加.catch方法

这是最适配你现有代码写法的处理方式,直接在then后追加catch块即可捕获所有异步抛出的错误:

const got = require('got');
got(`https://www.wrongurl.com`)
  .then(response => {
    // 执行相关业务逻辑
  })
  .catch(error => {
    // 按需判断错误类型做不同处理
    if (error.name === 'HTTPError') {
      console.log('请求异常,响应状态码:', error.response.statusCode);
    } else {
      console.log('其他错误:', error.message);
    }
  })

方案2:搭配async/await使用try catch

如果你更习惯用try catch的写法,需要将got调用改为await形式,包裹在async函数内部:

const got = require('got');

async function fetchData() {
  try {
    const response = await got(`https://www.wrongurl.com`);
    // 执行相关业务逻辑
  } catch (error) {
    if (error.name === 'HTTPError') {
      console.log('请求异常,响应状态码:', error.response.statusCode);
    } else {
      console.log('其他错误:', error.message);
    }
  }
}

fetchData();

补充提示

  • HTTPError实例内置了完整的请求、响应上下文,可通过error.request获取请求参数、error.response获取完整响应内容,方便排查问题。
  • 除了HTTP请求错误外,网络不通、DNS解析失败、请求超时等场景也会抛出对应错误,建议在捕获逻辑中做好分级处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:01