2017-08-04 51 views
3

我試圖使用提取API,但是當趕上了一堆相關的同源策略錯誤時沒有任何成功:捉「無法加載資源」使用提取API

window.onerror = (message, file, line, col, error) => console.log(error) 
window.addEventListener('error', (error) => console.log(error)) 

try { 
    fetch('https://www.bitstamp.net/api/ticker/').catch(e => { 
     console.log('Caugth error:') 
     console.log(e) 
     console.log(JSON.stringify(e)) 
    }) 
} 
catch (e) { 
    console.log('try-catch') 
    console.log(e) 
} 

的錯誤我要趕只能出現在Web控制檯:

error messages

見代碼示例在這裏:https://github.com/nyg/fetch-error-test

如何捕獲這些錯誤以提供屏幕上的消息?

編輯:fetch的catch塊實際上被執行。

fetch('https://www.bitstamp.net/api/ticker/') 
 
    .then(response => response.text()) 
 
    .then(pre) 
 
    .catch(e => { 
 
     pre(`Caugth error: ${e.message}`) 
 
    }) 
 

 
function pre(text) { 
 
    var pre = document.createElement('pre') 
 
    document.body.insertAdjacentElement('afterbegin', pre) 
 
    pre.insertAdjacentText('beforeend', text) 
 
}
pre { 
 
    border: 1px solid black; 
 
    margin: 20px; 
 
    padding: 20px; 
 
}

回答

2

至於我記得,你可以在你的典型try->catchcatch瀏覽器驅動的異常或catch chainfetch內。

CORS拋出異常意圖,讓用戶在瀏覽網站,知道這樣的異常,如果你可以稱呼他們,並保護可能的安全信息的泄漏叫做API /服務器上

閱讀here 。如果請求拋出可以迴應的一部分的錯誤,您是否能趕上這些錯誤有一個異常處理程序

,像一個狀態錯誤,比如以前的SO討論,那麼你就可以抓住它,並顯示自定義消息

+0

看起來你是對的:)。感謝您的鏈接,我沒有找到這個討論......但是,即使我無法捕捉這些錯誤,抓取塊的catch塊實際上已經執行(我可能有一些問題)。錯誤消息只是在Safari上輸入錯誤,在Chrome上嘗試獲取資源時在Chrome上失敗並且NetworkError錯誤。我使用代碼片段編輯了我的答案。 – nyg