首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >捕获所有javascript未处理的异常

捕获所有javascript未处理的异常
EN

Stack Overflow用户
提问于 2012-09-25 03:33:50
回答 4查看 84.3K关注 0票数 134

我正在尝试找到或想出一种方法来在警告框中显示应用程序中所有未处理的javascript异常。我希望所有这些都在客户端完成,而不使用任何服务器端代码。我正在使用MVC3作为一个环境。

我在过去的几天里一直在研究,但没有找到我想要的东西。

我在下面发现了两种方法,它们看起来几乎就是我正在寻找的,只是这些方法的设置是为了让你必须将一个函数名传递到一个自定义方法中,以打印该特定函数中所有未处理异常的堆栈跟踪。我正在寻找一种方法,不必手动将函数名传递给打印所有未处理异常的堆栈跟踪的自定义方法。我希望这些自定义方法只“监听”整个应用程序中所有未处理的异常。

http://eriwen.com/javascript/js-stack-trace/

还有一些类似于前面的链接:

https://github.com/eriwen/javascript-stacktrace

下面是来自上面第二个链接的基本代码,它打印指定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未处理的异常,然后将它们打印到屏幕上的警告框中吗?

谢谢!杰森

EN

回答 4

Stack Overflow用户

发布于 2013-04-24 15:28:49

您可以使用window.onerror方法来完成此操作。

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

Stack Overflow用户

发布于 2016-06-09 19:21:02

您可以使用window.onerror,或者(令人惊叹的是!)正确绑定到“error”事件:

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

如果你想跟踪JavaScript错误,你可以试试Atatus。我在阿塔斯工作。

票数 59
EN

Stack Overflow用户

发布于 2018-03-29 23:47:50

除了……之外

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

您还可以捕获在侦听unhandledrejection事件的promise回调(.then())中触发的所有错误

window.addEventListener('unhandledrejection', function (e) {
  alert("Error occurred: " + e.reason.message);
})
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12571650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档