Javascript 尽管有catch块,Fetch仍然抛出

Javascript 尽管有catch块,Fetch仍然抛出,javascript,promise,fetch,Javascript,Promise,Fetch,出于某种奇怪的原因,上面的代码仍然会抛出错误,然后执行.then语句。有办法解决这个问题吗 编辑:默认情况下,大多数浏览器开发人员控制台通常会记录404个错误,有些可能会记录或可以配置为记录所有请求 在这里看到错误并不意味着抛出了可捕获的JavaScript异常,除了JavaScript控制台日志和抛出异常外,浏览器控制台还显示了其他内容 在代码中没有任何方法可以阻止此错误出现在控制台中,但是某些控制台允许您从控制台隐藏这些请求 另外,fetch不会在404这样的典型错误响应代码上抛出错误。这是

出于某种奇怪的原因,上面的代码仍然会抛出错误,然后执行.then语句。有办法解决这个问题吗


编辑:

默认情况下,大多数浏览器开发人员控制台通常会记录404个错误,有些可能会记录或可以配置为记录所有请求

在这里看到错误并不意味着抛出了可捕获的JavaScript异常,除了JavaScript控制台日志和抛出异常外,浏览器控制台还显示了其他内容

在代码中没有任何方法可以阻止此错误出现在控制台中,但是某些控制台允许您从控制台隐藏这些请求

另外,fetch不会在404这样的典型错误响应代码上抛出错误。这是为了使它更灵活,让您决定是否仍然需要该内容,即使它是404响应代码

如果要对非200状态代码抛出错误,可以执行以下操作:

fetch('https://api.postcodes.io/postcodes/aassdd')
  .then((resp) => {
    console.log(resp.status);
  })
  .catch((e) => { console.log('ha'); });

它看起来不像是在扔东西。您可能只是看到404请求错误被记录到控制台上了吗?404未找到并不是一个会被捕获的错误。@JSFIDLE中的AlexanderO'Mara如果您打开控制台,它不会为您显示get错误吗?@adeneo有什么方法可以绕过它吗?
fetch('https://api.postcodes.io/postcodes/aassdd')
  .then((resp) => {
    if (resp.status !== 200) {
        throw new Error('Invalid status code: ' + resp.status);
    }
  })
  .catch((e) => { console.log('ha'); });