Angular 2 предоставляет способ получать уведомления о необработанном исключении путем реализации пользовательского глобального ErrorHandler
.
Однако, делая это, мы все еще не можем восстановить приложение, если оно перестало отвечать, и обычно пользователю придется перезагрузить страницу.
Два наиболее распространенных места для обработки исключений в Angular 2, о которых я мог подумать, это Observable
s и обработчики событий DOM. Давайте отложим первое место для этого вопроса и сосредоточимся на втором.
Итак, чтобы каким-то образом преодолеть не отвечающее поведение приложения, я бы хотел иметь глобальный обработчик необрабатываемых исключений, всплывающих из событий DOM. Таким образом, мы могли бы поймать, обработать и проглотить их, прежде чем они сломают что-то внутри Angular. Моя текущая идея о том, как мы могли бы реализовать это, заключается в следующем.
Все события DOM выполняются внутри NgZone
, а собственные классы JavaScript в браузере пропатчены обезьяной zone.js
. Итак, есть ли точка расширения, предоставляемая zone.js
, которую мы могли бы подключить, чтобы присоединить наш обработчик для необработанных исключений, произошедших внутри обработчика событий DOM?
Или, если у кого-то есть идея о том, как мы можем обрабатывать необработанные исключения, всплывающие из обработчика событий DOM, я был бы признателен за ваши мысли!