Nodejs Error captureStackTrace示例| Javascript打印堆栈跟踪为字符串的方法

893 阅读1分钟

在Java中,我们使用内置的方法来打印堆栈跟踪。

在Nodejs中,它在错误对象中提供了captureStackTrace 方法来获取调用堆栈信息。它创建了带有目标对象信息的.stack 属性。

它提供了用户定义的函数来捕获堆栈调用跟踪。

语法:

captureStackTrace(Object[, constructorFunciton])

Object:它是一个目标错误对象,返回包含堆栈跟踪的位置代码的行号的字符串。一个constructorFunciton:错误的自定义对象

这里是一个Nodejs captureStackTrace example

const employee = { "id": 1, "name": "john" };
Error.captureStackTrace(employee);
console.log(employee.stack);

输出:

A:\work\nodework>node error.js
john
    at Object.<anonymous> (A:\work\nodework\error.js:2:7)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47

让我们看看另一个例子

让我们定义函数,打印stack 属性,并返回未定义。

function MyError() {

}

console.log(new MyError().stack);

输出:

undefined

让我们在函数中加入带有错误对象的captureStackTrace方法。

function MyError() {
    Error.captureStackTrace(this, MyError);

}
console.log(new MyError().stack);

输出:

Error
    at Object.<anonymous> (A:\work\nodework\error.js:8:13)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47

它可以帮助用户隐藏执行错误的细节