2017-11-27 8 views
1

私はuse strictモードを使用して宣言されている既存の関数を処理しています。私が気付いたのは、例外がスローされたときにcatchブロックが実行されないということです。 strict modeの行に関連していると思います。なぜなら、私が乗るとcatchブロックに入るからです。strictモードで使用するとtry/catchの奇妙な動作

私はいつも、try/catchを使用することの主な目的は、実行時に制御されない状況が発生した場合に、コードが突然(制御なしで)終了しないようにすることです。

キャッチ句は 例外がtryブロックでをスローされた場合をどうするかを指定するステートメントが含まれています。

厳密なモードで使用すると、効果がないようです。その行動の説明はありますか?

マイコード:

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

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

備考

質問をする前に、私はStackOverflowのではいくつかの質問を見て、私は説明が見つかりませんでした。例えば、this questionconstの範囲であり、try/catch自体の動作ではありません。

+0

strictモードでは8進数の使用が無効な構文なので、エラーは構文エラーです。これに関するこれまでの議論はhttps://stackoverflow.com/questions/5963045/syntax-errors-can-be-caught-in-javascriptにあります –

答えて

-1

ここで行ったことは、「8進リテラル」と呼ばれるもので、非難されているのはto read why it is deprecated Here it isです。「厳密モード」を使用すると廃止された機能が使用できなくなるため、エラー。

関連する問題