是否有任何非致命的javascript错误可用于测试。。?

是否有任何非致命的javascript错误可用于测试。。?,javascript,jquery,Javascript,Jquery,我正在使用window.onerror和window.onbeforeunload来传递在使用AJAX的用户会话中遇到的所有错误,我正在尝试测试它,并且我需要创建一些javascript错误来测试它是否正在捕获它。我已经尝试了var a=b;在b不存在的地方,问题是这些错误似乎是致命的,并停止任何进一步的处理 有人能想出一种不停止脚本处理而导致一些错误的好方法吗 ErrorManager: (function () { function Init(message) {

我正在使用window.onerror和window.onbeforeunload来传递在使用AJAX的用户会话中遇到的所有错误,我正在尝试测试它,并且我需要创建一些javascript错误来测试它是否正在捕获它。我已经尝试了var a=b;在b不存在的地方,问题是这些错误似乎是致命的,并停止任何进一步的处理

有人能想出一种不停止脚本处理而导致一些错误的好方法吗

ErrorManager: (function () {
        function Init(message) {
            InitErrorHandler();
            InitAjaxHandler();


        }
        function InitErrorHandler() {
            Data.ErrorHandlerText = "";
            Data.ErrorHandlerCount = 0;
            window.onerror = function(errorMessage, url, line) {
                Data.ErrorHandlerText +"Error: "+(Data.ErrorHandlerCount+1)+" \n\n";
                //Get error specific info
                Data.ErrorHandlerText += escape(errorMessage) + "\n";
                Data.ErrorHandlerText +=  escape(url) + "\n";
                Data.ErrorHandlerText +=  escape(line) + "\n";
                Data.ErrorHandlerCount++;
            }
        }
        function InitAjaxHandler() {
            window.onbeforeunload = function() { //when browser closed
                if(Data.ErrorHandlerCount > 0) {
                    SendErrorsToAjax();
                }
            }
        }
        function SendErrorsToAjax() {
            PrepareErrorsForAjax();
            $.getJSON(Interface.PrefixUrl('/sendjserrors/'+Data.ErrorHandlerText), AjaxCallback);
        }
        function AjaxCallback(response) {
            console.log('response of js error ajax request '+response);
        }
        function PrepareErrorsForAjax() {
            var preText = "A user has encountered a few errors: \n\n";
            //Get session info
            var userAgent, activePageID;
            userAgent = escape(navigator.userAgent);
            preText += "User agent: "+userAgent+" \n";
            if($.mobile.activePage != null) {
                activePageID = $.mobile.activePage.attr('id');
                preText += "Page ID: "+activePageID+" \n";
            }

            preText += "\n The following errors were encountered:\n\n";
            Data.ErrorHandlerText = preText + Data.ErrorHandlerText;
        }
        return {
            Init: Init,
            SendErrorsToAjax: SendErrorsToAjax
        }
    })(),

在JavaScript中,所有错误都被认为是致命的。当前代码块标记或外部文件退出,页面从标记开始继续

不过,我不确定try…catch块是否会触发onerror。

怎么样

throw new Error( 'No worries. Just testing...' );

不过,如果你不想让程序崩溃,你就必须抓住它。

谢谢大家,在你说了这些话之后,我们进行了一次尝试,正如Kolink所说,一旦遇到错误,脚本基本上会退出,这远不理想

您可以通过以下方式测试OneError:

setTimeout("Interface.ErrorManager.SendErrorsToAjax()", 2000);
var a = b; //create an error
//script exists here, but the timeout still bounces in in a few seconds

您是否尝试将console.log放入window.onerror处理程序中,以查看它是否被命中?没有致命错误。除堆栈溢出外,所有错误都被创建为相等