2011-04-22 5 views
1

Kangax 블로그에는 다음과 같은 코드 예제가 있습니다. §JavaScript에서 구문 catch 구문 오류를 catch 할 수 있습니까?

 try { 
    (var x = 5); // grouping operator can only contain expression, not a statement (which `var` is) 
    } catch(err) { 
    // SyntaxError 
    } 

2 행의 구문 오류가 "전체 코드 구문"에 영향을 미치므로 여기서 catch 문은 무엇을 의미합니까?

catch catch이 JavaScript의 구문 오류를 잡을 수 있습니까?

답변

2

자바 스크립트 파서는 오류를 생성하므로 절대로 잡을 수 없습니다.

http://jsbin.com/oluje5/edit

어쩌면 그의 의도는 잘못된 구문 (만 표현하지 진술을 포함 할 수 있습니다 그룹화 연산자)를 지적했지만, 시도/catch 문은 쓸모가 없다.

또한 덧글 //syntaxError 내부 catch는 catch가 무엇인가 할 것이라고 가정합니다.

+0

특정 엔진은 구문 오류를 런타임 오류로 처리하고 그 반대로도 처리 할 수 ​​있습니다. 예를 들어,'if (false) {new Object = 1; }'는 Firefox에서 구문 오류로 간주됩니다. – user123444555621

+0

@ user123444555621, Chrome에서도 문법 오류입니다. 따라서 uncatchable입니다. 사양에서 허용하는 것이 확실합니까? 어떤 사양? – Pacerier

1

아니요, 맞습니다. try...catch을 사용하면 구문 오류가 발생하지 않습니다.

스크립트 블록이 구문 분석되지 않도록 구문 오류가 발생하면 스크립트 블록이 전혀 실행되지 않습니다.

1

변수 할당을 이와 같이 대괄호로 묶을 수 없으므로 구문 오류는 try/catch에 의해 catch되지 않습니다.

관련 문제