Html 浏览器如何处理异常?

Html 浏览器如何处理异常?,html,ecmascript-6,Html,Ecmascript 6,我决定用代码中的一行来计算浏览器如何处理脚本,这一行是个例外 假设我们有一个例外: throw Error("custom error"); 根据规范ecma262返回一个抛出类型的完成记录。 执行脚本时: 如果结果。[[Type]]正常,则 将结果设置为计算scriptBody的结果 返回完成(结果) 这向我们清楚地表明,从 但是ecma262规范没有说明何时向控制台抛出错误。我需要帮助了解whatwg规范如何拦截ecma262的错误抛出。您看到的行为在whatwg HTML标准(em

我决定用代码中的一行来计算浏览器如何处理脚本,这一行是个例外

假设我们有一个例外:

throw Error("custom error");
根据规范ecma262返回一个抛出类型的完成记录。 执行脚本时:

  • 如果结果。[[Type]]正常,则
    • 将结果设置为计算scriptBody的结果

  • 返回完成(结果)
  • 这向我们清楚地表明,从


    但是ecma262规范没有说明何时向控制台抛出错误。我需要帮助了解whatwg规范如何拦截ecma262的错误抛出。

    您看到的行为在whatwg HTML标准(emphasis mine)中指定

  • 否则,请将evaluationStatus设置为ScriptEvaluation(脚本的记录)。 如果由于用户代理中止了正在运行的脚本而导致ScriptEvaluation未完成,请将evaluationStatus保留为null

  • 如果evaluationStatus是突然完成,则:

  • 否则,rethrow errors为false。执行以下步骤:

  • 报告脚本的evaluationStatus。[[Value]]给出的异常。

  • 使用设置运行脚本后进行清理

  • 返回evaluationStatus

  • 当用户代理要报告异常E时,用户代理必须使用脚本的设置对象指定的全局对象作为目标,报告相关脚本的错误,以及包含脚本的资源中有问题的位置(行号和列号)。如果在此之后仍然没有处理错误,则可以将错误报告给开发人员控制台。


    另外,ECMAScript实际上没有控制台,这是在

    中指定的。我认为这不是标准化的,但是评估脚本的步骤可以在这里找到:。@FelixKling感谢您的链接。你能告诉我什么是重试错误吗?@MaximPro那里的规范说“可选的重试错误布尔值:”。它是函数的布尔参数
    rethrow
    意味着该错误将作为错误在调用堆栈中进一步传递。@loganfsmyth因此,对于我的行,没有rethrow参数。在什么样的代码中会出现这个论点?”因此,对于我的行,没有重述论点“对不起,我不知道这是什么意思。“这个参数是在什么代码中产生的?”请花点时间查看链接的规范。如果您按照链接使用该函数,其中一个会直接指向“运行经典脚本,将rethrow errors参数设置为true”的状态。因此答案是
    importScripts()
    将错误抛出到任何代码中。这可能会在以后记录,但也可能会捕获。