try catch块未捕获加载错误

时间:2014-04-23 22:11:40

标签: javascript try-catch

我有一个代码:

try{
  ...
} catch(error){
  ...
};

try块中,有一个函数调用向服务器发出请求。如果服务器上没有资源,则会出现错误(正如我在Google Chrome浏览器的开发人员工具中看到的那样):

Failed to load resource: the server responded with a status of 404 (Not Found)

我试图在catch块中捕获它,但是没有捕获到错误。

JavaScript的一项功能是try catch阻止无法捕获加载错误吗?

1 个答案:

答案 0 :(得分:4)

通常,在从服务器请求信息时(例如,通过ajax,通过设置src元素的img等),您无法获得异常,但是你确实得到了错误事件或回调,尤其是因为执行请求的代码在请求之前完成,因此在那时不可能抛出异常。由于您还没有显示您如何请求信息,因此无法更具体,但这就是您没有获得例外的原因。

例如,使用ajax请求,如果出现错误,您会看到ajax请求已完成,但statusCode对象的XMLHttpRequest是错误状态代码,而不是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();