在其初始化对象中捕获异常

时间:2014-05-12 10:06:53

标签: javascript exception-handling

我有一个Ajax对象,在其他一些对象中用来加载'Json'文件。

我需要在初始化对象中捕获404'未找到'抛出异常,但我不能这样做它总是给我:

  

未捕获的例外情况:*********

这里有一段代码:

_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);
}

我试图重新抛出异常,但我也一样。

1 个答案:

答案 0 :(得分:0)

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

Here证明了行动的不同。

请考虑使用Base.include.json(url,2)代替throw 'File not found';

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