Angular 2提供了一种通过实现自定义全局ErrorHandler
来通知未处理异常的方法。
但是,这样做仍然无法使应用恢复无响应状态,通常用户必须重新加载页面。
我可以想到的Angular 2中异常处理的两个最常见的地方是Observable
和DOM事件处理程序。让我们将前一个问题放在一边,专注于后一个问题。
因此,为了以某种方式克服应用程序无响应的行为,我想使用一个全局处理程序来处理DOM事件冒泡的未处理异常。这样我们就可以在它们破坏Angular内部的东西之前捕获,处理和吞下它们。我目前对如何实现它的想法如下。
所有DOM事件都在NgZone
内部运行,而浏览器本地JavaScript类则由zone.js
进行猴子修补。那么,zone.js
是否提供了扩展点,我们可以将其插入以附加处理程序,以处理DOM事件处理程序中发生的未处理异常?
或者如果有人对我们如何处理从DOM事件处理程序内部冒出的未处理异常有更好的主意,我将不胜感激您的想法!