17 错误处理与语言扩展 (Error Handling and Language Extensions)

实现必须在相关 ECMAScript 语言结构被求值时报告大多数错误。early error(早期错误) 是指可在包含该错误的 Script 的任意结构被求值之前就能检测并报告的错误。存在早期错误会阻止该结构的求值。实现必须在 ParseScript 解析 Script 时,将其中的早期错误作为解析的一部分报告。Module 中的早期错误在该 Module 将被求值的时刻报告,并且该 Module 永远不会被初始化。eval 代码中的早期错误在调用 eval 时报告,并阻止 eval 代码的求值。所有不是早期错误的错误都是运行时错误。

实现必须将本规范各 “Static Semantics: Early Errors” 子小节中列出的条件的任何出现作为早期错误报告。

实现不得将其他类型的错误视为早期错误,即使编译器可以证明某个结构在任何情况下都无法无错执行。此类情形下实现可以发出早期警告,但不应在相关结构真正执行之前报告该错误。

实现应按规范报告所有错误,但以下情况除外:

17.1 禁止的扩展 (Forbidden Extensions)

实现不得以下述方式扩展本规范: