window.onerror在移动设备中不起作用 - 我应该如何处理未处理的异常?

Yoh*_*uki 13 javascript exception-handling onerror sencha-touch cordova

我正在研究用Sencha Touch和PhoneGap编写的复杂Web应用程序.Sencha Touch应用程序的编写方式使得很难用try/catch包围每个潜在的故障点,尤其是异步AJAX请求处理程序.

检测未处理的异常何时发生因为它看起来和感觉就像使用PhoneGap的本机应用程序(即我们不能指望它们刷新页面并再次尝试在常规浏览器中查看的Web应用程序中),这一点也非常重要.

您能否建议如何处理这种情况?

Chr*_*loe 1

这是一个很好的问题。当然,窗口error事件永远不应该取代策略性放置的try/catch块或充分利用来自 HTTP 请求的错误响应,但在移动浏览器赶上桌面版本之前,报告真正意外的错误几乎是不可能的。

我没有时间对此进行测试;所以我现在能建议的是一个思想实验,老实说这可能是一个坏主意......

您可能会为addEventListener(也许dispatchMethod)编写替换函数,这些函数可以包装本机函数/处理程序参数try/catch并调用自定义全局错误记录器。由于没有简单的方法可以同时“挂钩”这些函数,因此毫无疑问意味着迭代许多本机对象的原型以window执行“包装”。这可以涵盖目前保持沉默的绝大多数例外情况。