#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); }
Комментариев нет:
Отправить комментарий