17 오류 처리 및 언어 확장

구현은 관련 ECMAScript 언어 구성요소가 평가될 때 대부분의 오류를 보고해야 한다. early error(조기 오류) 는 그 오류를 포함하는 Script 안의 어떤 구성요소도 평가되기 전에 검출·보고될 수 있는 오류이다. 조기 오류가 존재하면 그 구성요소의 평가가 차단된다. 구현은 ParseScript 과정에서 해당 Script 를 파싱하는 일부로 Script 의 조기 오류를 보고해야 한다. Module 의 조기 오류는 그 Module 이 평가될 지점에서 보고되며 그 Module 은 결코 초기화되지 않는다. eval 코드의 조기 오류는 eval 이 호출되는 시점에 보고되며 해당 eval 코드의 평가를 막는다. 조기 오류가 아닌 모든 오류는 런타임 오류이다.

구현은 이 명세의 “Static Semantics: Early Errors” 하위 절에 열거된 조건이 발생하면 반드시 그것을 조기 오류로 보고해야 한다.

구현은 (컴파일러가 어떤 구성요소가 어떤 상황에서도 오류 없이 실행될 수 없음을 입증할 수 있더라도) 다른 종류의 오류를 조기 오류로 취급해서는 안 된다. 그런 경우 구현이 조기 경고를 낼 수는 있지만, 관련 구성요소가 실제로 실행될 때까지 오류를 보고해서는 안 된다.

구현은 다음과 같은 경우를 제외하고 명세된 대로 모든 오류를 보고해야 한다:

17.1 금지된 확장

구현은 다음과 같은 방식으로 이 명세를 확장해서는 안 된다: