[英]Load error is not captured by try catch block
我有一個類似的代碼:
try{
...
} catch(error){
...
};
在try
塊中,有一個向服務器發出請求的函數調用。 如果服務器上沒有資源,則會引發錯誤(如我在Google Chrome瀏覽器的開發人員工具中看到的):
Failed to load resource: the server responded with a status of 404 (Not Found)
並且我試圖在catch
塊中捕獲它,但是未捕獲到錯誤。
try
catch
塊未捕獲加載錯誤是JavaScript的功能嗎?
通常,當從服務器請求信息時(例如,通過ajax,通過設置img
元素的src
等),您不會獲得異常 ,但是會收到錯誤事件或回調,這尤其是因為進行請求的代碼先於請求完成,因此此時無法引發異常。 由於您沒有顯示如何請求信息,因此不可能更加具體,但這就是為什么您沒有例外。
例如,對於ajax請求,如果發生錯誤,則您會看到ajax請求已完成,但XMLHttpRequest
對象的statusCode
是錯誤狀態代碼,而不是200。例如:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
// The request is complete; did it work?
if (xhr.statusCode >= 200 && xhr.statusCode < 300) {
// Yes
}
else {
// No, got a code outside the 2xx range
}
}
};
xhr.open("GET", "/your/url/here", true);
xhr.send();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.