Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Почему не перехватывается исключение?

#javascript


Помогите новичку, почему не перехватывается исключение?

try {
    254 = 'string';
} catch (e) {
    console.log(e);
}

    


Ответы

Ответ 1



Работа любого скрипта в javascript состоит из двух фаз. Первым вступает в дело синтаксический анализатор, который просматривает весь входной текст и подготавливает скрипт к выполнению, переводит его во внутреннее представление. На второй фазе это внутреннее представление начинает выполняться. Если синтаксический анализатор находит ошибку синтаксиса он немедленно прерывает разбор скрипта, так как не может продолжать разбор и не может построить корректное внутреннее представление. Конструкция try/catch может перехватывать только ошибки, возникающие на стадии выполнения. В вашем случае ошибка синтаксическая, до выполнения дело не доходит и никакого try в этот момент еще не существует.

Ответ 2



Синтаксическую ошибку можно перегнать в ошибку выполнения и отловить через eval Например: try { eval('254 = k;'); } catch (e) { console.log(e); }

Комментариев нет:

Отправить комментарий