作家
登录

JavaScript错误处理和堆栈追踪浅析

作者: 来源: 2017-04-07 09:18:02 阅读 我要评论

  •  
  •   
  •  
  • function a() { 
  •  
  •     console.log('a'); 
  •  
  •     b(); 
  •  
  •  
  •   
  • a();  
  • 当法度榜样运行出现缺点时, 平日会抛出一个 Error 对象. Error 对象可以作为用户自定义缺点对象持续的原型.

    Error.prototype 对象包含如部属性:

    • constructor–指向实例的构造函数
    • message–缺点信息
    • name–缺点的名字(类型)

    上述是 Error.prototype 的标准属性, 此外, 不合的运行情况都有其特定的属性. 在例如 Node, Firefox, Chrome, Edge, IE 10+, Opera 以及 Safari 6+ 如许的情况中, Error 对象具备 stack 属性, 该属性包含了缺点的客栈轨迹. 一个缺点实例的客栈轨迹包含了自构造函数之后的所有客栈构造.

    如不雅在函数 c 运行完成之后, 在函数 b 中输出当前的客栈数据, 就会看到函数 c 已经大年夜客栈的顶部被移除, 此时客栈中仅包含函数 a 和 b.

    如不雅想懂得更多关于 Error 对象的特定属性, 可以浏览 MDN 上的┞封篇文┞仿.

    为了抛出一个缺点, 必须应用 throw 关键字. 为了 catch 一个抛出的缺点, 必须应用 try...catch 包含可能跑掉足误的代码. Catch的参数是被跑出的缺点实例.

    须要重点解释一下的是在抛掉足误时, 可以只抛出一个简单值而不是 Error 对象. 尽管这看起来看酷并且是许可的, 但这并不是一个推荐的做法, 尤其是对于一些须要处理他人代码的库和框架的开辟者, 因为没有标准可以参考, 也无法得知会大年夜用户那边获得什么. 你不克不及信赖用户会抛出 Error 对象, 因为他们可能不会这么做, 而是简单的抛出一个字符串或者数值. 这也意味着很难去处理客栈信息和其它元信息.

    JavaScript缺点处理和客栈追踪浅析

    如 Java 一样, JavaScript 也许可在 try/catch 之后应用 finally 关键字. 在处理完缺点之后, 可以在finally 语句块作一些清除工作.

    在语法上, 你可以应用 try 语句块而厥后不必跟着 catch 语句块, 但必须跟着 finally 语句块. 这意味着有三种不合的 try 语句情势:

    • try...catch
    • try...finally
    • try...catch...finally

    Try语句内还可以在嵌入 try 语句:

    1. try { 
    2.  
    3.     try { 
    4.  
    5.         throw new Error('Nested error.'); // The error thrown here will be caught by its own `catch` clause 
    6.  
    7.     } catch (nestedErr) { 
    8.  
    9.         console.log('Nested catch'); // This runs 
    10.  
    11.     } 
    12.  
    13. } catch (err) { 
    14.  
    15.     console.log('This will not run.'); 
    16.  
    17.  

    也可以在 catch 或 finally 中嵌入 try 语句:

    1. try { 
    2.  
    3.     console.log('The try block is running...'); 
    4.  
    5. } finally { 
    6.  
    7.     try { 
    8.  
    9.         throw new Error('Error inside finally.'); 
    10.  
    11.     } catch (err) { 
    12.  
    13.         console.log(

        推荐阅读

        关于JavaScript的数组随机排序

      JavaScript 开辟中有时会碰到要将一个数组随机排序(shuffle)的需求,一个常见的写法是如许:function shuffle(arr) { arr.sort(function () { return Math.random() - 0.5; >>>详细阅读


      本文标题:JavaScript错误处理和堆栈追踪浅析

      地址:http://www.17bianji.com/lsqh/34615.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)