浏览器如何处理异常?

时间:2019-11-25 11:53:32

标签: html ecmascript-6

我决定弄清楚浏览器如何处理代码中只有一行的脚本,这是一个例外。

让我们说这个例外:

throw Error("custom error");

根据规范ecma262 ThrowStatement返回具有抛出类型的完成记录。 执行脚本ScriptEvaluation时:

  
      
  1. 如果结果。[[Type]]正常,则      
        
    • 将结果设置为评估scriptBody的结果。
    •   
  2.   

  
      
  1. 返回完成(结果)。
  2.   

这使我们很清楚,ScriptEvaluation返回了具有抛出类型的完成记录

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

1 个答案:

答案 0 :(得分:1)

您看到的行为在WHATWG HTML标准(强调我的)中指定。

https://html.spec.whatwg.org/multipage/webappapis.html#calling-scripts

  
      
  1. 否则,将valuationStatus设置为ScriptEvaluation(脚本的记录)。   如果ScriptEvaluation由于用户代理终止了正在运行的脚本而没有完成,则将EvaluationStatus保留为空。

  2.   
  3. 如果评价状态是一个突然完成,则:

         
        
    1. ...

    2.   
    3. ...

    4.   
    5. 否则,重新抛出错误为false。执行以下步骤:

           
          
      1. 报告评估状态给出的异常。脚本的[[Value]]。

      2.   
      3. 使用设置运行脚本后进行清理。

      4.   
      5. 返回评估状态。

      6.   
    6.   
  4.   

https://html.spec.whatwg.org/multipage/webappapis.html#runtime-script-errors-in-documents

  

当用户代理要报告异常E时,用户代理必须使用以下命令指定的全局对象报告相关脚本的错误,并在包含该脚本的资源中列出有问题的位置(行号和列号)脚本的设置对象作为目标。如果此后仍未处理该错误,则该错误可能会报告给开发者控制台。

此外,ECMAScript实际上没有在https://console.spec.whatwg.org中指定的控制台