我有一个用于在JS中读取json文件的代码。我把代码包装在“try catch”块中。 我得到它的方式 - 如果由于某种原因找不到该文件,它应该进入“catch”块。 然而,如果“lang”未定义 - 它会抛出404: “GET - < -server-> - / settings / Lang_undefined.json 404(Not Found)” 没有进入“捕获”区块。
任何人都可以帮助我理解为什么会这样吗?
谢谢!
function loadDic() {
try {
$.getJSON(SERVER_URL + "settings/Lang_" + lang + ".json", function(data) {
dic = data["dictionary"];
setLanguage();
});
} catch (err) {
return false;
}
}
答案 0 :(得分:2)
由于您似乎正在发出ajax请求(而不是jsonp请求),因此您可以使用错误回调来捕获错误。
function loadDic() {
$.getJSON(SERVER_URL + "settings/Lang_" + lang + ".json", function(data) {
dic = data["dictionary"];
setLanguage();
}).fail(setLanguageFail);
}
答案 1 :(得分:2)
Ajax是异步的。
getJSON
函数发送HTTP请求。try
成功404错误不会导致抛出异常(这是一个HTTP错误,而不是JavaScript错误),并且当时无需等待捕获异常。
如果您想在发生错误时执行某些操作,请指定一个处理错误的函数(您无法使用getJSON()
执行此操作,而应使用ajax()
代替)。请注意,您不能从包含getJSON
调用的函数返回(基于此)。