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

标签 javascript

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

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

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

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 未处理的异常,然后将它们打印到屏幕上的警告框中吗?

谢谢! 杰森

最佳答案

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

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

关于javascript - 捕获所有 javascript 未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571650/

相关文章:

javascript - 路线更改后谷歌标签管理器不发送分析请求

javascript - 将 JSON 对象从 Flask 传递到 JavaScript

javascript - 将经典 promise 与异步相结合

javascript - 当域的最后一个选项卡关闭时显示弹出窗口

javascript - 迭代类名并在 vanilla js 中隐藏一些类名

javascript - 与 webpack 捆绑时,react-router-dom 项目因 publicPath 而中断

JavaScript 正则表达式

javascript - 在 index.html 中加载时调用 js 函数时出现问题

javascript - 如何轻松测量 JSON 对象的复杂性?

javascript - 如何监听所有窗口的自定义事件,冒泡问题?