2017-07-24 53 views
0
fetch('https://api.postcodes.io/postcodes/aassdd') 
    .then((resp) => { 
    console.log(resp.status); 
    }) 
    .catch((e) => { console.log('ha'); }); 

由于某些奇怪的原因,上面的代码仍然会抛出错误并在执行.then之后的语句。有没有办法来解决这个问题 ?尽管有catch块,仍然会抛出提示

编辑:fiddle

+0

它似乎并没有被投掷。你可能只是看到404请求错误被记录到控制台? –

+0

'404 Not Found'并不是真的会被捕获的错误。 – adeneo

+0

@ AlexanderO'Mara在jsfiddle如果你打开控制台,它不显示一个错误吗? – August

回答

1

大多数浏览器开发商控制台通常由日志默认的404错误,有的可能,或可以被配置为,记录所有的请求。

Console screenshot

,你看在这里看到的错误并不意味着追赶能JavaScript异常被抛出,除了JavaScript控制台日志和抛出异常的事实,浏览器控制台也显示了其他的事情。

在代码中没有任何东西可以阻止控制台出现此错误,但某些控制台会让您从控制台隐藏这些请求。

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

如果你想扔在一个非200状态码的错误,你可以这样做:

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'); }); 
相关问题