作家
登录

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

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

 
  • function funcThatThrowsError() { 
  •     throw new TypeError('I am a TypeError.'); 
  •  
  • runWithoutThrowing(funcThatThrowsError); 
  • 如不雅你的用户像膳绫擎如许传递一个抛出Error对象的函数给runWithoutThrowing函数(那就谢天谢地了),然而总有些人偷鲜攀懒直接抛出一个String,那你就麻烦了己

    1. function runWithoutThrowing(func) { 
    2.     try { 
    3.         func(); 
    4.     } catch (e) { 
    5.         console.log('There was an error, but I will not throw it.'); 
    6.         console.log('The error\'s message was: ' + e.message) 
    7.     } 
    8.  
    9. function funcThatThrowsString() { 
    10.     throw 'I am a String.'
    11.  
    12. runWithoutThrowing(funcThatThrowsString); 

    如今第二个console.log会打印出 the error’s message is undefined.这么看来也没多大年夜的事(后不雅)呀,然则如不雅您须要确保某些属性存在于Error对象上,或以另一种方法(例如Chai的throws断言 does))处理Error对象的特定属性,那么你做须要更多的工作,以确保它会正常工资。

    此外,当抛出的值不是Error对象时,你无法拜访其他重要数据,例如stack,在某些情况中它是Error对象的一个属性。

    Errors也可以像其他任何对象一样应用,并不必定非得要抛出他们,这也是它们为什么多次被用作回调函数的第一个参数(俗称 err first)。 鄙人面的fs.readdir()例子中就是这么竽暌姑的。

    1. const fs = require('fs'); 
    2.  
    3. fs.readdir('/example/i-do-not-exist'function callback(err, dirs) { 
    4.     if (err instanceof Error) { 
    5.         // `readdir` will throw an error because that directory does not exist 
    6.         // We will now be able to use the error object passed by it in our callback function 
    7.         console.log('Error Message: ' + err.message); 
    8.         console.log('See? We can use Errors without using try statements.'); 
    9.     } else { 
    10.         console.log(dirs); 
    11.     } 
    12. }); 

    抛掉足误必须应用throw关键字,你必须将可能抛掉足误的代码担保在try代码块内并紧跟着一个catch代码块来捕获抛出的缺点。

    最后,在rejecting promises时也可以应用Error对象。这使得它更轻易处理promise rejections:

    1. new Promise(function(resolve, reject) { 
    2.     reject(new Error('The promise was rejected.')); 

        推荐阅读

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

      近些年来,深度卷积神经收集(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)