Javascript try catch块未捕获加载错误

Javascript try catch块未捕获加载错误,javascript,try-catch,Javascript,Try Catch,我的代码如下: try{ ... } catch(error){ ... }; 在try块中,有一个函数调用向服务器发出请求。当服务器上没有资源时,会出现一个错误(正如我在Google Chrome的开发者工具中看到的): 我试图在catch块中捕获它,但是没有捕获错误 JavaScript的一个特性是加载错误不会被trycatch块捕获吗?通常,当从服务器请求信息时(例如,通过ajax,通过设置img元素的src等),不会得到异常,但会得到错误事件或回调,不仅仅是因为执行请求的代码在

我的代码如下:

try{
  ...
} catch(error){
  ...
};
try
块中,有一个函数调用向服务器发出请求。当服务器上没有资源时,会出现一个错误(正如我在Google Chrome的开发者工具中看到的):

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


JavaScript的一个特性是加载错误不会被
try
catch
块捕获吗?

通常,当从服务器请求信息时(例如,通过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();
var xhr=new-XMLHttpRequest();
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
//请求已完成;是否有效?
如果(xhr.statusCode>=200&&xhr.statusCode<300){
//对
}
否则{
//不,有一个超出2xx范围的代码
}
}
};
open(“GET”,“/your/url/here”,true);
xhr.send();

您是如何提出请求的?我自己也不熟悉Javascript,但像这样的错误通常不是例外。@Linuxios我不知道发出请求的确切命令。我对库中的函数进行调用,该函数试图加载某个文件。我们可以看到该代码(对库的调用)吗?我看到了。因此,非200响应也不例外。Google Chrome开发者工具显示这些内容以及其他例外情况,这是一种误导。@sawa:不,web控制台显示了很多东西。与使用不推荐的API相关的异常、请求失败和警告。这里没有关于错误是例外的承诺。感谢您的澄清。
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();