Глобальный обработчик исключений всплыл из событий DOM - PullRequest
2 голосов
/ 03 мая 2019

Angular 2 предоставляет способ получать уведомления о необработанном исключении путем реализации пользовательского глобального ErrorHandler.

Однако, делая это, мы все еще не можем восстановить приложение, если оно перестало отвечать, и обычно пользователю придется перезагрузить страницу.

Два наиболее распространенных места для обработки исключений в Angular 2, о которых я мог подумать, это Observable s и обработчики событий DOM. Давайте отложим первое место для этого вопроса и сосредоточимся на втором.

Итак, чтобы каким-то образом преодолеть не отвечающее поведение приложения, я бы хотел иметь глобальный обработчик необрабатываемых исключений, всплывающих из событий DOM. Таким образом, мы могли бы поймать, обработать и проглотить их, прежде чем они сломают что-то внутри Angular. Моя текущая идея о том, как мы могли бы реализовать это, заключается в следующем.

Все события DOM выполняются внутри NgZone, а собственные классы JavaScript в браузере пропатчены обезьяной zone.js. Итак, есть ли точка расширения, предоставляемая zone.js, которую мы могли бы подключить, чтобы присоединить наш обработчик для необработанных исключений, произошедших внутри обработчика событий DOM?

Или, если у кого-то есть идея о том, как мы можем обрабатывать необработанные исключения, всплывающие из обработчика событий DOM, я был бы признателен за ваши мысли!

...