try-catch不适用于XMLHTTPRequest

时间:2012-05-05 03:39:21

标签: javascript xmlhttprequest try-catch

我正在尝试使用try-catch语句处理来自XMLHTTPRequest的错误,如下所示:

var xhr = new XMLHttpRequest();
xhr.open('POST', someurl, true);
try{
    xhr.sendMultipart(object);
}
catch(err){
    error_handle_function();
}

xhr.sendMultipart引发401错误时,未调用error_handle_function。知道如何解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:24)

我认为你无法以这种方式捕获服务器错误。你应该检查状态代码:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
    if (xhr.readyState === 4){   //if complete
        if(xhr.status === 200){  //check if "OK" (200)
            //success
        } else {
            error_handle_function(); //otherwise, some other code was returned
        }
    } 
}
xhr.open('POST', someurl, true);
xhr.sendMultipart(object);

答案 1 :(得分:6)

  

当xhr.sendMultipart抛出401错误

没有抛出。它以异步方式返回。

这意味着此代码在响应到达之前完成运行。这就是true来电中open的含义。

您需要注册一个onReadyStateChange处理程序并在那里处理错误响应。