Как бы практично ни выглядела ваша идея, на практике ее невозможно реализовать.
Для сравнения, язык программирования Java заставляет обрабатывать отмеченные исключения (исключения, из которых вы можете восстанавливаться), в то время как непроверенные исключения (например, RuntimeException
- исключения, которые вы не можете восстановить) могут просто происходить нормально при время выполнения вне вашего контроля. Поскольку они по существу невосстановимы , ваша программа должна остановиться.
Исключения, возникающие в JS JSM, в отличие от java, невозможно разделить на категории с проверкой и без проверки. Поскольку такого различия нет, невозможно избежать остановки сценария.
Что если вы разделите функцию / бесконечность? Как вы должны оправиться от этого?
На каждый отдельный сценарий существует отдельный ответ. Вот почему единственный оставшийся и действительный ответ на вашу проблему - это использовать блок try catch
каждый раз, когда вы боитесь, что произойдет Exception
, и остановить ваш код, и обрабатывать его специально для этой ситуации.
Что касается обработчика событий window.onerror
, он не имеет значения для этого вопроса, поскольку он не перехватывает исключения времени выполнения, он перехватывает ошибку, которая возникает, когда исходное исключение не перехватывается в блоке try catch . Вот почему вы получаете великолепное «Uncaught exception: xxxxx», добавленное к фактическому, оригинальному сообщению об исключении. Исключение уже произошло, ваш сценарий уже остановлен, все, что вы можете сделать, это отобразить его так, как вы хотите.