Javascript 捕获其初始值设定项对象中的异常

Javascript 捕获其初始值设定项对象中的异常,javascript,exception-handling,Javascript,Exception Handling,我有一个Ajax对象,在其他一些对象中用于加载“Json”文件 我需要捕获初始化器对象中抛出的404“Not found”异常,但我无法做到这一点,因为它总是给我: 未捕获异常:********* 下面是一段代码: _ajax_params.xmlhttp.onreadystatechange = function() { if (_ajax_params.xmlhttp.readyState==4 && _ajax_params.xmlhttp.status==200)

我有一个Ajax对象,在其他一些对象中用于加载“Json”文件

我需要捕获初始化器对象中抛出的404“Not found”异常,但我无法做到这一点,因为它总是给我:

未捕获异常:*********

下面是一段代码:

_ajax_params.xmlhttp.onreadystatechange = function() {
    if (_ajax_params.xmlhttp.readyState==4 && _ajax_params.xmlhttp.status==200) {
        _ajax_params.response = _ajax_params.xmlhttp.responseText;
        if (typeof afterClosure == 'function') {
            afterClosure(_ajax_params.response);
        }
        COMMON.always(_ajax_params.response);
    } else if (_ajax_params.xmlhttp.status== 404) {
        throw 'File not found';
    }
};
在初始值设定项对象中:

try {
   Base.include.json(url, 1);
} catch (e) {
   console.error(e);
   Base.include.json(url,2);
}
我试图重新抛出异常,但得到了相同的结果。

您可能在try..catch块中定义了回调,但函数在所述块之外执行,即在触发事件时执行。这意味着回调中发生的异常不会被外部块捕获

这是一个行动差异的证明


考虑调用Base.include.jsonurl,2代替抛出“未找到文件”


此外,除非您已经知道readyState是4,否则不应该真正检查状态,但这是一件小事。

考虑调用Base.include.jsonurl,2代替抛出“未找到文件”;也许我做不到这一点,因为Base.include.json是一个通用对象,所以它被用于许多不同的地方。这很好,但我需要在初始化器对象中处理该异常。我还在尝试用callErrorHandlerFunction替换抛出,这是您在初始值设定项对象中定义的函数吗?这似乎不错,但我可能无法做到,因为我在前面的评论中提到了这个原因。