You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECMAScript规范定义的全量JavaScript错误类型列表与测试套件查询

ECMAScript标准错误类型汇总与GraalJS适配参考

规范明确定义的原生错误类型

当前ECMAScript 2024正式规范中,明确定义的Error子类共8种,所有符合规范的JS引擎都必须实现这些错误类型的对应逻辑:

  • Error:所有错误的基类,用于通用错误场景,无特定类型归属的引擎错误也会使用该类型抛出
  • EvalError:与eval()函数执行异常相关的错误类型,目前规范中仅做向后兼容保留,新版引擎极少主动抛出该类型错误,仅在极个别eval调用方式非法的旧兼容场景下触发
  • RangeError:当参数或值不在合法取值范围内时抛出,典型场景包括设置数组长度为负数、Number.prototype.toFixed()传入超出0-100范围的参数、数值转换超出JS可表示的安全范围等
  • ReferenceError:引用不存在的绑定、在暂时性死区(TDZ)阶段访问let/const声明的变量时触发
  • SyntaxError:JS源码解析阶段不符合语法规则时抛出,典型场景包括括号不匹配、非法使用关键字、JSON解析失败等
  • TypeError:操作值的类型不符合预期时抛出,是日常开发中最常见的错误类型,典型场景包括对null/undefined读取属性、将非函数类型的值作为函数调用、对不可写属性重新赋值等
  • URIError:全局URI处理函数(encodeURI/decodeURI/encodeURIComponent/decodeURIComponent)传入非法格式参数时抛出
  • AggregateError:ES2021新增的错误类型,用于包装多个同批次触发的错误,典型场景为Promise.any()所有传入Promise均reject时抛出,错误实例通过errors属性存储所有子错误对象

注意:InternalError不属于ECMAScript规范定义的标准错误类型,是各引擎自行实现的非标准扩展,GraalJS中栈溢出、引擎内部资源耗尽等场景会抛出该类型错误,适配时需要单独做兼容处理。

对应测试套件参考

  • ECMA官方Test262测试集:是ECMA组织维护的JS语言一致性权威测试套件,覆盖了所有标准错误类型的触发场景、抛出条件校验,你可以直接筛选套件中错误断言相关的用例,作为你适配错误逻辑的校验基准,不需要手动汇总所有错误场景。
  • GraalJS原生测试集:GraalJS开源仓库的测试模块中,已经包含了所有标准错误类型的触发case,适配自定义错误逻辑时可以直接复用这部分用例,避免改造后和引擎原有行为出现不一致。

GraalJS侧适配提示

  • 不要修改标准错误对象的原型链,所有自定义的友好提示、扩展信息建议通过错误对象的附加属性传递,避免破坏上层JS代码对错误类型的instanceof判断逻辑。
  • GraalJS抛出的错误对象默认携带栈信息、源码行列号、引擎内部错误码等扩展属性,适配时不要覆盖这些原有属性,可在错误生成的拦截钩子上补充上下文提示、修复建议等自定义内容。
  • 优先做内部异常到标准错误类型的映射:GraalJS运行时Java侧抛出的内部异常,需要全部映射到对应的标准错误类型,不要直接将Java异常暴露给JS层。
  • 重点覆盖易漏场景:暂时性死区访问、超大数组长度赋值、递归栈溢出、AggregateError透传等场景需要单独校验,确保错误类型完全符合规范要求。

内容的提问来源于stack exchange,提问作者yushie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.17 16:16:01