【发布时间】:2011-04-18 18:09:01
【问题描述】:
我想对我的 JavaScript 部署做一些事情,我正在寻找一种非常巧妙的方法来实现它。
我想在我的代码上运行try/catch,这不应该是非常令人印象深刻或复杂的,但是当我遇到失败时,我想这样做:让开发团队知道, 而不是等待那个一次性的客户足够关心他写一封电子邮件,因为他有机会注意到有什么东西坏了。
我最初的想法是编写一个支持提交对象,我可以对它进行编码以获取任何随机数据(即report.submit(issue_data);),并创建一个对我的服务器的 ajax 调用,以静默方式将数据添加到收件箱或数据库或随便。
我想我可以这样做:
try {
some_code();
} catch(e) {
do_instead();
report.submit(issue_data);
report.update(); //Could perhaps show the users a history of errors
}
但是,我想看看是否有更好的解决方案...更好的是解决这里看不见的缺陷,更无缝地做事,关于如何处理提交系统故障的建议,也许使用原型一些令人兴奋的方式,等等。
此外,我这里的简单解决方案有很多限制,可能会使整个事情变得半无用,例如无法指示失败的代码的特定部分、行号、创建失败的条件、浏览器版本等。
【问题讨论】:
-
对我来说看起来不错。我会使用 CouchDB 之类的东西,因为它可以从客户端访问(不需要服务器代码)。
-
自第一次发布以来,我已经忍者编辑了一些我们对解决方案的限制。
-
您可以创建一个函数来为您处理呼叫。在您的代码中,您可以在发生不好的事情时调用它。这样您就可以提供更详细的信息。或者只是将所有这些放入您的异常中并使用 JSON.stringify 发布。
-
确保只尝试捕获预计不会失败的代码;您不希望您的开发团队仅仅因为用户决定对 js 在其浏览器中可以执行的操作实施更严格的限制而收到大量电子邮件。如果您的善意电子邮件包装了用户可能不想运行的代码,那么它很容易成为一种责任。
标签: javascript exception-handling error-handling