For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/year/pending/proposal-error-stack-accessor.md.
  • 简体中文
  • Error Stack Accessor S3

    中文标题:错误堆栈访问器

    提案概览
    提案速览

    本提案标准化了现有的 Error.prototype.stack 访问器,允许读取和设置错误对象上的堆栈跟踪,且不引入任何新的面向开发者的 API。它通过仔细定义设置器语义(如对非对象参数抛出异常,以及对非错误接收器视为无操作)来解决安全问题。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    错误堆栈访问器

    面向 Error.prototype.stack 的 ECMAScript 提案、规范及参考实现。

    推动者:

    规范作者:

    该提案目前处于流程第3阶段

    理由

    在语言规范中,错误从未附带堆栈跟踪——然而,各实现始终如一地在实例化的 Error 对象上提供一个名为“stack”的属性。长期以来,人们一直担心不当标准化堆栈跟踪——以至于实现无法在提供安全保证的同时声称完全符合规范。本提案试图开始对现有浏览器行为的交集进行标准化,并以解决这些安全顾虑的方式展开。

    历史

    本提案是从错误堆栈提案中分离出来的,后者在实现者阻力克服之前还需要大量工作。 特别是,它不包含任何新增的净表面 API——仅包含长期以来存在于 Error 实例上的 stack 属性。

    设置器

    在理想情况下,设置器不会存在,但出于网络兼容性需求的假设,它被包含在本提案中。 本提案中该设置器当前的语义是:

    1. 尝试以非对象或无值调用该函数将抛出异常
    2. 以非错误接收器调用该函数将视为无操作
    3. 尝试在真实 Error 对象上 [[Set]] 任何值将使用与 Iterator.prototype.constructor 相同的逻辑,并在对象上不存在自有属性时安装一个自有属性。

    我们也更倾向于在提供非字符串参数时抛出异常,但网络兼容性在此情形下是否成立远没有那么明确。

    命名

    Error.prototype.stack 的名称已固定不变——这是既定事实的网络现实。

    规范

    您可以查看以 HTML 形式渲染的规范。