作家
登录

深入理解JavaScript错误和堆栈追踪

作者: 来源: 2017-04-25 17:10:21 阅读 我要评论

  •     at REPLServer.defaultEval (repl.js:313:29) 
  •     at bound (domain.js:280:14) 
  •     at REPLServer.runBound [as eval] (domain.js:293:12) 
  • Try语句可以像下面如许互相嵌套:

    如不雅我们如今在b中并且在c履行完之后打印客栈,我们将会发明c已经大年夜客栈的顶部移除,只剩下了a和b。

    在Node REPL办事器上运行上述代码会获得如下结不雅:

    1. function c() { 
    2.     console.log('c'); 
    3.  
    4. function b() { 
    5.     console.log('b'); 
    6.     c(); 
    7.     console.trace(); 
    8.  
    9. function a() { 
    10.     console.log('a'); 
    11.     b(); 
    12. a(); 

    正如你看到的那样,客栈中已经没有c,因为它已经完成运行,已经被弹出去了。

    正如我在上一节中提到的,Chai应用客栈操作技巧使客栈跟踪加倍与我们的用户相干。下面将揭晓我们是若何做到的。

    当c履行时,客栈中的函数的次序为a b c

    1. Trace 
    2.     at b (repl:4:9) 
    3.     at a (repl:3:1) 
    4.     at repl:1:1  // <-- For now feel free to ignore anything below this point, these are Node's internals 
    5.     at realRunInThisContextScript (vm.js:22:35) 
    6.     at sigintHandlersWrap (vm.js:98:12) 
    7.     at ContextifyScript.Script.runInThisContext (vm.js:24:12) 
    8.     at REPLServer.defaultEval (repl.js:313:29) 
    9.     at bound (domain.js:280:14) 
    10.     at REPLServer.runBound [as eval] (domain.js:293:12) 
    11.     at REPLServer.onLine (repl.js:513:10) 

    总结:调用办法,办法便会添加到客栈顶部,履行完毕之后,它就会大年夜客栈中弹出。

    Error对象 和 Error处理

    当法度榜样产生缺点时,平日都邑抛出一个Error对象。Error对象也可以作为一个原型,用户可以扩大它并创建自定义缺点。

    Error.prototype对象平日有以部属性:

    • constructor- 实例原型的构造函数。
    • message - 缺点信息
    • name - 缺点名称

    以上都是标准属性,(但)有时刻每个情况都有其特定的属性,在例如Node,Firefox,Chorme,Edge,IE 10+,Opera 和 Safari 6+ 中,还有一个包含缺点客栈记录的stack属性。缺点客栈记录包含大年夜(客栈底部)它本身的构造函数到(客栈顶部)所有的客栈帧。

    如不雅想懂得更多关于Error对象的具体属性,我强烈推荐MDN上的┞封篇文┞仿。

    在膳绫擎这惯例子中,当履行a函数时,a便会添加到客栈的顶部,然后当b函数在a函数中被调用,b也会被添加到客栈的顶部,依次类推,在b中调用c也会产生同样的工作。

    正如Java中的缺点处理,try/catch代码块后紧跟着一个finally代码块在JavaScript中也是同样许可的,无论try代码块内是否抛出异常,finally代码块内的代码都邑履行。在完成处理之后,最佳实践是在finally代码块中做一些清理的工作,(因为)无论你的操作是否生效,都不会影响到它的履行。


      推荐阅读

      深度卷积神经网络在目标检测中的进展

    近些年来,深度卷积神经收集(DCNN)在图像分类和辨认上取得了很明显的进步。回想大年夜 2014 到 2016 这两年多的时光,先后出现出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SD>>>详细阅读


    本文标题:深入理解JavaScript错误和堆栈追踪

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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