Какие типы ошибок обнаруживаются операторами try-catch в Javascript?

Если я напишу

try { null = foobar } catch(e) { alert( e ) };

ничего не предупреждено, кроме ReferenceError вошел в консоль. Тем не мение,

try { barfoo = foobar } catch(e) { alert( e ) };

показывает предупреждение с ReferenceError,

Поэтому возникает вопрос: какие типы ошибок в каком контексте попадают в операторы try-catch?

1 ответ

Итак, ваша первая строка кода неверный синтаксис JavaScript. Вот почему вы получаете:
ReferenceError: Invalid left-hand side in assignment (Вы не можете назначить переменные null)

Ваша вторая строка имеет правильный синтаксис, но выдает:
ReferenceError: foobar is not defined,

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

Более простое объяснение, любезно предоставлено Matt:

Это просто неверный синтаксис JavaScript против ошибок времени выполнения. Последний пойман, первый нет.

Вы можете думать об этом как о интерпретаторе JavaScript, который просматривает весь код перед его выполнением и думает , что все это правильно анализируется? Если это не так, он бросает неуловимый Error (будь то SyntaxError или же ReferenceError). В противном случае код должен быть выполнен, и в какой-то момент вы вводите блок try/catch во время выполнения, и любые ошибки времени выполнения, выдаваемые во время его выполнения, перехватываются.

Другие вопросы по тегам