• js 打印错误堆栈


    Error对象

    一旦代码解析或运行时发生错误,JavaScript引擎就会自动产生并抛出一个Error对象的实例,然后整个程序就中断在发生错误的地方。

    Error对象的实例有三个最基本的属性:

    • name:错误名称
    • message:错误提示信息
    • stack:错误的堆栈(非标准属性,但是大多数平台支持)

    利用name和message这两个属性,可以对发生什么错误有一个大概的了解。

    1.  
      if (error.name){
    2.  
      console.log(error.name + ": " + error.message);
    3.  
      }
    4.  
       

    上面代码表示,显示错误的名称以及出错提示信息。

    stack属性用来查看错误发生时的堆栈。

    function throwit() {
      throw new Error('');
    }
     
    function catchit() {
      try {
        throwit();
      } catch(e) {
        console.log(e.stack); // print stack trace
      }
    }
     
    catchit()
    // Error
    //    at throwit (~/examples/throwcatch.js:9:11)
    //    at catchit (~/examples/throwcatch.js:3:9)
    //    at repl:1:5

    上面代码显示,抛出错误首先是在throwit函数,然后是在catchit函数,最后是在函数的运行环境中。

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

    • constructor--指向实例的构造函数
    • message--错误信息
    • name--错误的名字(类型)
      上述是 Error.prototype 的标准属性, 此外, 不同的运行环境都有其特定的属性. 在例如 Node, Firefox, Chrome, Edge, IE 10+, Opera 以及 Safari 6+ 这样的环境中, Error 对象具备 stack 属性, 该属性包含了错误的堆栈轨迹. 一个错误实例的堆栈轨迹包含了自构造函数之后的所有堆栈结构.

    1. Errors 也可以被作为其它对象, 你也不必抛出它们, 这也是为什么大多数回调函数把 Errors 作为第一个参数的原因。
    const fs = require('fs');
    
    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);
        }
    });
     
  • 相关阅读:
    春秋战国时期灭了三个国家的陈国女人
    学历史有什么用?
    真正的奴才韩非
    深度学习的历史
    深度学习三十年
    图算法
    几种常见的查找算法
    数据结构之基于堆的优先队列
    几种常见的排序算法
    数据结构(背包、队列和栈)
  • 原文地址:https://www.cnblogs.com/youxin/p/13507414.html
Copyright © 2020-2023  润新知