私は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 questionはconst
の範囲であり、try/catch
自体の動作ではありません。
strictモードでは8進数の使用が無効な構文なので、エラーは構文エラーです。これに関するこれまでの議論はhttps://stackoverflow.com/questions/5963045/syntax-errors-can-be-caught-in-javascriptにあります –