17 错误处理和语言扩展

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

实现必须把本规范“Static Semantics: 早期错误”子条款中列出的条件的任何出现报告为早期错误

即使编译器能够证明某个构造在任何情况下都无法不出错地执行,实现也不得把其他种类的错误当作早期错误处理。在这种情况下,实现可以发出早期警告,但在相关构造实际执行之前,不应报告该错误。

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

17.1 禁止的扩展

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