2015-10-26 63 views
6

也许我误解了async/await如何捕捉错误应该从像这样的文章https://jakearchibald.com/2014/es7-async-functions/和这个http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html工作,但我的catch块没有捕获400/500。try..catch不捕捉异步/等待错误

async() => { 
    let response 
    try { 
    let response = await fetch('not-a-real-url') 
    } 
    catch (err) { 
    // not jumping in here. 
    console.log(err) 
    } 
}() 

example on codepen if it helps

+0

阿法克的提取API不considter 400/500错误 – VeXii

回答

14

400/500是不是一个错误,这是一个响应。出现网络问题时,您只会收到异常(拒绝)。

当服务器的答案,你必须检查它是否是good与否:

try { 
    let response = await fetch('not-a-real-url') 
    if (!response.ok) // or check for response.status 
     throw new Error(response.statusText); 
    let body = await response.text(); // or .json() or whatever 
    // process body 
} catch (err) { 
    console.log(err) 
}