2017-11-27 12 views
1

use strict 모드를 사용하여 선언 된 기존 함수에서 작업하고 있습니다. 내가 이상한 것을 발견 한 것은 예외가 던져 질 때 catch 블록이 실행되지 않는다는 것입니다. 나는 그것이 strict mode 선과 관련이 있다고 생각한다. 내가 타는 때, 그것은 catch 블록에 들어간다.strict 모드에서 사용할 때 try/catch JavaScript 이상한 동작

난 항상 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.

질문을하기 전에, 나는에 유래에서 몇 가지 질문을 보았다 그러나 나는 설명을 발견하지 않았다. 예를 들어 this questionconst의 범위에 해당하며 try/catch 자체의 동작은 아닙니다.

+0

엄격 모드에서 8 진수를 사용할 수 없으므로 구문 오류가 발생합니다. 이에 대한 이전 토론은 https://stackoverflow.com/questions/5963045/syntax-errors-can-be-caught-in-javascript에서 가능합니다. –

답변

-1

여기서 수행 한 작업은 "8 진수 리터럴"이라고 불리는 것인데, 더 이상 사용되지 않습니다. to read why it is deprecated Here it is 그리고 '엄격 모드'를 사용하면 더 이상 사용되지 않는 기능을 사용할 수 없으므로 완전히 명백합니다. 오류.