@ivandao

Как работает try/catch?

Как работает try/catch: общий смысл понятен - пытается исполниться код внутри блока try, если что-то не получилось, то исполняем код внутри блока catch.
Вопрос - как интерпретатор узнает, что внутри блока try появилась какая-то ошибка? Какой для этого универсальный признак?
  • Вопрос задан
  • 411 просмотров
Решения вопроса 1
@architawr
"Ok, Google" и все твои проблемы решены
Пригласить эксперта
Ответы на вопрос 2
@Karpion
Универсального признака нет, там бывают разные ошибки. Например, "деление на ноль", "синус от слишком большого числа (когда шаг дискретности числа больше, чем период синуса)" и другие варианты; правда, отсутствуют многие ошибки, свойственные компилируемым языкам программирования, типа "выход за границу массива".

А вот ошибки типа "программа попыталась открыть несуществующй или запретный для неё файл" - я так понимаю, catch не вызывают - такие операции просто возвращают код неудачного завершения, и их надо обрабатывать в основном потоке.

В первом приближении можно сказать примерно так: переход к catch возникает в случае, когда без catch программа должна вывалиться с сообщением "программа совершила недопустимую операцию", как-то так.
Это не точное соответствие, а пояснение для первичного понимания.
Ответ написан
Комментировать
@grinat
Кидается исключение. То есть разбирается код, помечается шо есть try/catch, передает на исполнение и там если что страшное происходит, кидается исключение, восстанавливает состояние до ошибки и переходит к catch. Если catch нет они всплывают выше, до window.onerror, если совсем что-то страшное случилось и обработать низя, то программа крашится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы