作家
登录

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

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

  • fs.readdir('/example/i-do-not-exist'function callback(err, dirs) { 
  •  
  •     if (err instanceof Error) { 
  •  
  •         // `readdir` will throw an error because that directory does not exist 
  •  
  •         // We will now be able to use the error object passed by it in our callback function 
  •  
  •         console.log('Error Message: ' + err.message); 
  •  
  •         console.log('See? We can use Errors without using try statements.'); 
  •  
  •     } else { 
  •  
  •         console.log(dirs); 
  •  
  •     } 
  •  
  • });  
  • 正如所看到的, 昔时夜函数 c 中输出时, 客栈中包含了函数 a, b 以及c.

    最后, Error 对象也可以用于 rejected promise, 这使得很轻易处理 rejected promise:

    1. new Promise(function(resolve, reject) { 
    2.  
    3.     reject(new Error('The promise was rejected.')); 
    4.  
    5. }).then(function() { 
    6.  
    7.     console.log('I am an error.'); 
    8.  
    9. }).catch(function(err) { 
    10.  
    11.     if (err instanceof Error) { 
    12.  
    13.         console.log('The promise was rejected with an error.'); 
    14.  
    15.         console.log('Error Message: ' + err.message); 
    16.  
    17.     } 
    18.  
    19. });  

    处理客栈

    这一节是针对支撑 Error.captureStackTrace的运行情况, 例如Nodejs.

    Error.captureStackTrace 的第一个参数是 object, 第二个可选参数是一个 function.Error.captureStackTrace 会捕获客栈信息, 并在第一个参数中创建 stack 属性来存储捕获到的客栈信息. 如不雅供给了第二个参数, 该函数将作为客栈调用的终点. 是以, 捕获到的客栈信息将只显示该函数调用之前的信息.

    用下面的两个demo来解释一下. 第一个, 仅将捕获到的客栈信息存于一个通俗的对象之中:

    1. const myObj = {}; 
    2.  
    3.   
    4.  
    5. function c() { 
    6.  
    7.  
    8.   
    9.  
    10. function b() { 

        推荐阅读

        关于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)