javaScript上的try-catch不起作用
我有一个在JS中读取json文件的代码。我将代码包装在“try-catch”块中。 我得到它的方式-如果由于某种原因找不到文件,它应该进入“catch”块。 然而,如果“lang”未定义,则会抛出404: “获取--/settings/Lang_undefined.json 404(未找到)” 从未进入“捕捉”块 有人能帮我理解为什么会这样吗 谢谢javaScript上的try-catch不起作用,javascript,json,Javascript,Json,我有一个在JS中读取json文件的代码。我将代码包装在“try-catch”块中。 我得到它的方式-如果由于某种原因找不到文件,它应该进入“catch”块。 然而,如果“lang”未定义,则会抛出404: “获取--/settings/Lang_undefined.json 404(未找到)” 从未进入“捕捉”块 有人能帮我理解为什么会这样吗 谢谢 function loadDic() { try { $.getJSON(SERVER_URL + "settings/La
function loadDic() {
try {
$.getJSON(SERVER_URL + "settings/Lang_" + lang + ".json", function(data) {
dic = data["dictionary"];
setLanguage();
});
} catch (err) {
return false;
}
}
由于您似乎正在发出ajax请求(而不是jsonp请求),因此可以使用错误回调捕获错误
function loadDic() {
$.getJSON(SERVER_URL + "settings/Lang_" + lang + ".json", function(data) {
dic = data["dictionary"];
setLanguage();
}).fail(setLanguageFail);
}
Ajax是异步的
getJSON
函数发送一个HTTP请求try
成功如果要在发生错误时执行某些操作,请指定一个函数来处理它(使用
getJSON()
无法执行此操作,应改用ajax()
)。请注意,您无法从包含getJSON
调用的函数返回(基于此)。错误发生在loadDic
完成后很长一段时间,在try/catch之外。它可能会按照预期工作,但是ajax是异步的,因此try/catch块在请求期间不会捕获网络错误或其他内容。http错误代码不会引发异常非常感谢!那么,我该怎么做才能捕捉到文件未发现异常呢?我的术语可能不太准确,但你知道我的意思。我的控制台上有一个404,非常感谢你。我试过了,我进入了“失败”部分。但我仍然可以在控制台中看到404。可以吗?它不会导致程序出现问题吗?是的,没关系,除了不请求一个不存在的文件之外,你无法避免它。