Javascript 捕获其初始值设定项对象中的异常
我有一个Ajax对象,在其他一些对象中用于加载“Json”文件 我需要捕获初始化器对象中抛出的404“Not found”异常,但我无法做到这一点,因为它总是给我: 未捕获异常:********* 下面是一段代码: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_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替换抛出,这是您在初始值设定项对象中定义的函数吗?这似乎不错,但我可能无法做到,因为我在前面的评论中提到了这个原因。