如何处理生产中偶尔发生的(看似)随机JavaScript错误?

时间:2013-01-17 01:52:20

标签: javascript debugging production-environment

我会干净利落地承认,出于对我网站的盲目无知,直到最近我部署了一个Elmah的网站(ASP.NET的错误记录工具)并且服务器上的控制器,用于发送所有未捕获的JavaScript异常。至少可以说这是一次令人瞩目的经历。

我的一个网站每天约有150-200名访客。大约每天一次我得到一个类似于这个的Elmah JavaScript堆栈跟踪:

CCS.Exceptions.JavaScriptException: Unspecified error.: at document path
    'http://www.*******.com/*****'. at anonymous('Unspecified error.',
    'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js', '5')
    at anonymous()

我对JavaScript和Web开发相对较新,所以我很感激一些建议:

  • 我应该如何解决这类问题的根本原因?有关调试生产中的问题的建议(特别是JavaScript)?

  • 您会在重要程度上对此进行排名吗?我意识到,如果不知道我盘子里的所有内容,那么几乎不可能回答这个问但我希望的是优先考虑这类东西的建议。我的头发着火了吗?或者,“嗯,这是非常常见的,如今所有的浏览器和操作系统都会发生这种事情。”

2 个答案:

答案 0 :(得分:1)

这些异常中的每一个都是一个不按设计工作的网页的可能性非常大。为了理解该优先级,您需要了解以下内容:

  1. 有多少百分比的网页浏览量受到影响?
  2. 具体例外情况是什么?它们会造成什么问题?
  3. 这对您的企业造成的麻烦有多重要。
  4. 需要多长时间来识别和修复这些内容,以及与您的平板上的其他项目相比,其业务重要性如何?
  5. 一般情况下,如果没有进一步的研究,你就不会知道任何这些问题的答案,所以你要么必须决定所有未完全理解的例外是坏事,至少应该理解。< / p>

    或者,您必须决定启动一个调查项目以获取与这些问题相关的更多信息,然后决定是否修复它。

    或者,您必须确定您没有听到有关您网站问题的足够报告以保证进一步调查(我个人不喜欢这个选项,因为您猜测它不是物质)。

    在不了解您的业务的详细信息的情况下,我的建议是预算和计划调查项目,以了解这些错误的来源,并了解它们对网站可用性的影响。用一些数据做出决策比猜测要好。


    至于调试,最终需要找出触发异常的代码行。您还可能希望记录生成错误的浏览器配置(如果是与浏览器版本相关的问题)。您可以首先了解堆栈跟踪报告中的每条信息的含义以及它告诉您的内容,然后了解您是否可以在Elmah系统中启用更详细的异常跟踪。如果没有,您可以大致了解错误的来源,您可以实现自己的异常日志记录,可以捕获其他信息。

    您还可以浏览网站上的任何故障单报告,因为可能会有一些内部或外部报告显示网站可能与这些例外相关的问题。

答案 1 :(得分:0)

JavaScript错误可能很难深究。您可以做的最好的事情是确保您的JavaScript写得干净利落,并将所有内容放入命名空间,以使您的窗口对象尽可能干净,并避免变量提升,这是JavaScript库不守规矩时的常见问题。下面是我全面使用的首选命名空间模式 -

/* Namespace pattern */
var myAppNamespace = myAppNamespace || {};
(function(ns) {
    ns.doSomething = function() {
        // enter code here
    };
}(myAppNamespace));

/* Usage */
myAppNamespace.doSomething();