2017-07-24 44 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'); }); 
相關問題