代码之家  ›  专栏  ›  技术社区  ›  Dimitar Christoff

以有意义的方式捕获和记录“bugfoot”javascript异常

  •  1
  • Dimitar Christoff  · 技术社区  · 15 年前

    我们有一些关于我们的结账问题的报告,其中客户得到js异常(我们假设),因此他们无法结账。

    无论我们使用多少测试台,我们都无法重现问题,但这就是练习的重点。

    我设置了一个简单的错误捕获功能,该功能基于以下内容:

    window.onerror = function(message, url, line, chr) {
        new Request({
            url: "/errorTrap.php",
            data: {
                m: message,
                u: url,
                l: line,
                c: chr
            },
            method: "get",
            onComplete: function() {
                // perhaps save the rendered html source via a second POST request?    
                alert("done");
            }
        }).send();
        return true;
    };
    

    果然,在一个星期内,我收到了8封被困异常的电子邮件。

    遗憾的是,签出页面非常动态。它包含一些内联javascript,其中很多是外部的。js文件和类,还有一些通过ajax响应进行js评估。页面的长度取决于购物篮中的物品、运输选项、通讯簿信息等。

    这就是为什么在第253行看到异常“Object expected”的意义很小,因为它不能帮助我理解是哪个函数触发了异常,也不能提供脚本块/源代码的上下文。

    我一直在考虑执行第二个XHR请求,该请求可以删除文档的innerHTML。主体,从而提供可能导致问题的相对行号和内容。

    这是我在追踪方面唯一能做的改进吗?有什么解决办法吗?

    下面是演示异常处理的JSFIDLE http://www.jsfiddle.net/dimitar/8hqrY/

    1 回复  |  直到 15 年前
        1
  •  0
  •   ivan_pozdeev RenanSS    13 年前

    嗯,调试问题总是这样。要么去那里,实际看到问题,然后用调试工具解决,要么获取证据、猜测、获取更多证据等等,歇洛克·福尔摩斯风格:^)

    除了DOM树之外,您还可以获得JS堆栈跟踪: A Javascript stacktrace in any browser .