2015-10-26 15 views
6

Vielleicht ich das falsch verstanden, wie fangen Fehler mit async/await soll wie diese https://jakearchibald.com/2014/es7-async-functions/ von Dingen Artikel arbeiten und diese http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html, aber mein catch Block fangen 400/500 nicht.try..catch nicht async Fangen/erwarten Fehler

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

AFAK die Abruf- api considter 400/500 Fehler nicht – VeXii

Antwort

14

400/500 ist kein Fehler, dann ist es eine Antwort. Sie erhalten nur eine Ausnahme (Ablehnung), wenn ein Netzwerkproblem auftritt.

Wenn der Server antwortet, müssen Sie prüfen, ob es good oder nicht:

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) 
}