JavaScript странное поведение try / catch при использовании в строгом режиме

1

Я работаю над существующей функцией, которая объявляется с use strict режима. То, что я нашел странным, заключается в том, что когда генерируется исключение, блок catch не выполняется. Я думаю, что это связано с strict mode линией strict mode потому что, когда я получаю удовольствие от нее, она идет в блоке catch.

Я всегда видел, что главная цель использования try/catch состоит в том, чтобы предотвратить внезапный выход кода (без какого-либо контроля), когда во время выполнения неконтролируемая ситуация.

Предложение catch содержит инструкции, которые указывают, что делать, если в блок try выбрано исключение.

При использовании со строгим режимом кажется, что он не имеет никакого эффекта. Есть ли объяснения этого поведения?

Мой код:

function test(){
	"use strict"
	//...
	try {
		// var dt = new Date(2017, 10, 27, 15, 23, 9); /* works fine */
		var dt = new Date(2017, 10, 27, 15, 23, 09);
	} catch(e){
		console.log("inside catch");
	} finally {
	   console.log("inside finally");
	}
	//...
}

test();
// output: Uncaught SyntaxError:
// Decimals with leading zeros are not allowed in strict mode.

замечание

Прежде чем задать вопрос, я просмотрел некоторые вопросы в StackOverflow, но я не нашел объяснений. Например, этот вопрос касается объема const не поведения самого try/catch.

  • 0
    Использование восьмеричного является недопустимым синтаксисом в строгом режиме, поэтому ошибка является синтаксической ошибкой. Об этом уже говорилось в stackoverflow.com/questions/5963045/…
Теги:
exception
exception-handling
try-catch

1 ответ

-1

То, что вы здесь сделали, "09" - это что-то, называемое восьмеричным литералом, и оно устарело, чтобы понять, почему оно устарело. Вот оно, и это совершенно очевидно, поскольку использование "строгого режима" не позволит вам использовать устаревшие функции, чтобы он приведет к ошибке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню