捕获所有的javascript未处理的exception

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

我一直在研究最近几天,还没有find我正在寻找什么。

我发现以下两种方式看起来像他们几乎是我在找什么,除了这些方式设置,以便您必须传递一个函数名称到一个自定义的方法来打印所有未处理的exception的堆栈跟踪具体function。 我正在寻找一种方法,不必手动将函数名称传递给一个自定义的方法,打印所有未处理的exception的堆栈跟踪。 我希望这些自定义方法只是“监听”整个应用程序中的所有未处理的exception。

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

谢谢! 贾森

你可以通过使用window.onerror方法来做到这一点。

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

你可以使用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; }) 

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

看看http://log4javascript.org它是基于Log4J。; 如果大部分代码被try / catch语句包装以处理exception,则可以使用该库作为通用接口,将输出发送到总是可用的“对话框”或最终用户可以看到的日志logging窗口。 你甚至可以有一个button,执行一个window.print()将对话框的内容打印到打印机或PDF。 祝你好运。