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

99
22 сентября 2019, 02:00

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

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

Работа любого скрипта в javascript состоит из двух фаз. Первым вступает в дело синтаксический анализатор, который просматривает весь входной текст и подготавливает скрипт к выполнению, переводит его во внутреннее представление. На второй фазе это внутреннее представление начинает выполняться.

Если синтаксический анализатор находит ошибку синтаксиса он немедленно прерывает разбор скрипта, так как не может продолжать разбор и не может построить корректное внутреннее представление.

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

Answer 2

Синтаксическую ошибку можно перегнать в ошибку выполнения и отловить через eval

Например:

try {
    eval('254 = k;');
} catch (e) {
    console.log(e);
}
READ ALSO
Плавный скролинг по секциям на чистом javascript

Плавный скролинг по секциям на чистом javascript

На сайте нужно реализовать плавную прокрутку по секциям на чистом javascript, без всяких плагинов и библиотек

103
Смена языков для приложения Vue.js

Смена языков для приложения Vue.js

у меня есть небольшое SPA приложение на Vuejs

71
как добавить кавычки в innerHTML

как добавить кавычки в innerHTML

как сделать ,чтобы на странице отображалось "rJokevalue" ? А не просто rJoke

126
дёргается навбар при прокрутке

дёргается навбар при прокрутке

есть страница с навбаром, который с помощью JS уменьшается при прокрутке вниз, при этом всегда оставаясь вверху (position: sticky)если быстро и сильно...

80