2015-10-26 68 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) 
}