捕获所有javascript未处理的异常

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我正在设法在警报框中显示应用程序中所有未处理的javascript异常。我希望所有这些都在客户端完成,而不使用任何服务器端代码。我正在使用MVC 3作为环境。

下面是基本代码,它输出指定javascript函数的堆栈跟踪:

instrumentFunction: function (context, functionName, callback) {
    context = context || window;
    var original = context[functionName];
    context[functionName] = function instrumented() {
        callback.call(this, printStackTrace().slice(4));
        return context[functionName]._instrumented.apply(this, arguments);
    };
    context[functionName]._instrumented = original;
}

function printStackTrace(options) {
    options = options || {
        guess: true
    };
    var ex = options.e || null,
        guess = !! options.guess;
    var p = new printStackTrace.implementation(),
        result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

总而言之,你们是否都知道有什么方法可以让某种“侦听器”监听所有javascript未处理的异常,然后将它们输出到一个警报框中的屏幕上?

提问于
用户回答回答于

你可以用window.onerror正确绑定到“错误”事件:

window.onerror = function (message, file, line, col, error) {
   alert("Error occured: " + error.message);
   return false;
};
window.addEventListener("error", function (e) {
   alert("Error occured: " + e.error.message);
   return false;
})

用户回答回答于

可以通过使用window.onError方法来完成这一任务。

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
    alert("Error occured: " + errorMsg);//or any message
    return false;
}

扫码关注云+社区