以下脚本使您可以运行一段javascript代码。 try / catch块正在捕获错误。
$(".gallery img");
但是,如果变量 try {
var result = eval(script);
} catch (e) {
// do something meaningful
}
包含例如AJAX调用,并且此ajax调用抛出异常(例如在success函数中),则此try / catch块不会捕获此异常...
script
问题:如何捕获ajax请求中抛出的异常?
答案 0 :(得分:1)
我希望您了解使用eval
的危险,如果没有,那里有很多好的文章可以解释为什么它不是一个好主意。
话虽如此,问题是成功回调是在catch块之后调用的。您需要在成功回调中添加try/catch
块,或者您需要从更全局的角度处理错误。我能想到的一个想法是使用window.onerror事件。我在下面的示例中显示了与您的问题类似的内容,并且显示了可以捕获eval
中抛出的错误的示例。
(function() {
'use strict';
window.addEventListener('error', e => console.log(`window.onerror: ${e.message}`));
let script = `setTimeout(function() {
throw new Error('Whoops!');
}, 0);`;
eval(script);
script = `throw new Error('Whoops!');`;
try {
eval(script);
} catch (e) {
console.log(e.message);
}
})();