繁体   English   中英

一个全面的JavaScript错误

[英]A catch-all for JavaScript errors

如果浏览器的控制台出现任何错误,我已经不得不问我的用户了多少次,而且每次我必须经历询问他们使用的是什么浏览器的过程,不是没有操作系统,浏览器。 Google是一个搜索引擎,您使用的浏览器是什么? 你试过另一个吗? 您的浏览器是最新的吗? 您自2009年以来没有更新过? 好的,你现在更新了吗? 还是行不通。 嗯。 你确定你甚至在正确的页面上吗? 好吧,所以没有问题,你只是期待它做一些它不会做的事情。

我想要的是一种方法来捕获所有JavaScript错误并以某种方式将它们呈现在页面上,例如,通知弹出窗口显示“嘿,发生错误,复制这些东西并且它可以得到修复!”

任何......任何指针? 在我完全疯了之前?

你有几个选择:

  1. 异常处理程序允许您捕获未在本地处理的更高级别代码的异常。

  2. 此外, window.onerror(fn)将捕获页面中的一些错误,您可以在该事件触发时记录它们。

  3. 除了任何错误,您还可以从用户代理字符串中检索浏览器信息并记录,这样您就不必向用户询问他们并不总是知道的内容。

  4. 许多桌面程序提供诊断屏幕,报告技术支持通常想知道的大量系统信息。 如果需要,您可以为您的Web应用程序创建类似的页面。 它可以收集所有可以识别单个系统的内容,并将其全部放在一个可复制的文本字段中。 在紧要关头,用户可以从该屏幕读取信息或通过电子邮件发送给支持的人。

您可以将所有这些与某种内部日志记录系统(可能是本地存储的最后N个错误)和一些UI进行组合以查看它们。

依赖用户执行任何这些操作的任何方法都将失败:

  • 记住他们做了什么,计算机做了什么,以及他们想要高精度做什么
  • 知道他们的电脑上安装了什么
  • 通过复制/粘贴到电子邮件报告详细的technobabble错误消息。 这是工作。

相反,您需要一个日志文件,目录或服务器上的数据库表,其中收集消息 - 实质上是自动错误报告。

需要编写可能失败或在变量中返回可能的错误条件的代码以检查错误消息 - 即使这是最佳实践,这么多代码也缺少这一点 - 然后将错误消息发送到您的收集设备中。

当然,这假定在发生错误后代码仍能正常运行以发送自动错误报告。 但是使用通常不是英雄假设的网络应用程序。

我第一次采用这种方法是在2001年回归PHP的一些大学研究代码,有一个“bug”mySQL表来收集所有的错误。 为代码质量创造了奇迹。

这在浏览器Javascript中实现起来比较困难,因为运行时错误可能会停止页面,而try/catch块有时会掩盖失败的内容。 但仍有相当多的事情可做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM