如何以编程方式确定某些JavaScript代码是否失败或生成错误

时间:2014-04-02 16:52:36

标签: javascript html

我在网页上嵌入了一些JavaScript代码。尽管进行了跨浏览器测试以确保JavaScript在不同操作系统和Web浏览器的矩阵上运行,但JavaScript在执行期间仍可能失败。

有没有办法确定某些JavaScript何时失败,然后记录该事件,以及一些会话环境,它会提供有关发生的事情的一些信息?我知道JavaScript <noscript>标记和HTML5中的no-js样式,但我更关心JavaScript何时尝试运行但遇到问题。

基本上,我想知道我的JavaScript代码何时无法执行,因此我可以了解更多有关发生的事情并主动解决问题。商业解决方案是可以接受的。

到目前为止,我找到的最接近的解决方案是Jamey Sharp's method to set a global variable in JavaScript, then check the value of that variable in a later JavaScript

2 个答案:

答案 0 :(得分:6)

将所有代码包装在

try {
    [code]
} catch (e) {
    [handle error]
}

这可以很简单:

function error_wrap(callback) {
    try { callback(); } catch (e) {
        // do ajax to report error
    }
}
error_wrap(function () {
    // my code
});

困难的部分是事件。每当发生事件时,都不会捕获错误。

 error_wrap(function () {
    setTimeout(function () {
        throw new Error("nope"); // this error will not be caught
    }, 1);
});

确保您还包装所有事件处理程序(以及setTimeoutsetInterval)。

它可以看起来像setTimeout

function wrappedSetTimeout(callback, ms) {
    return setTimeout(function () { // wrap the function again because we don't want to execute it yet
        error_wrap(callback);
    }, ms);
}

答案 1 :(得分:0)

try/catch documentation

Mozilla开发者网络的示例:

try {
   throw "myException"; // generates an exception
}
catch (e) {
   // statements to handle any exceptions
   logMyErrors(e); // pass exception object to error handler
}

如果你想记录,那么你必须进行一次AJAX调用,将错误和上下文发送到后端并在那里使用你通常的记录机制。