17 错误处理与语言扩展

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

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

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

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

17.1 禁止的扩展

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