从nodejs中抛出的字符串中获取堆栈跟踪
Get a stack trace from a throwed string in nodejs
当我运行此代码时:
throw 'a string';
我在我的终端上得到了这个堆叠竞赛:
$ node test.js
/home/user/test.js:2
throw 'a string';
^
a string
这是文件名和出现此异常的行。
我正在尝试构建一个异常日志机制,当我使用uncaughtException处理程序时,我无法获得文件名或行。
process.on('uncaughtException', function() {
console.log(arguments);
});
throw 'a string';
当我运行这个代码时,我只得到:
$ node test2.js
{ '0': 'a string' }
当我使用uncaughtException处理程序时,是否可以获得filename/行?
感谢
使用throw new Error('my message');
C: ''Users''xxx''Desktop>节点测试.js
C: ''Users''xxx''Desktop''test.js:1(函数(exports,required,module,__filename,__dirname){throw'test';^测试
test.js的内容:throw 'test';
C: ''Users''xxx''Desktop>节点test2.js
C: ''Users''xxx''Desktop''test2.js:1(函数(exports,required,module,__filename,__dirname){抛出新错误(^错误:测试在对象处。(C:''Users''xxx''Desktop''test2.js:1:69)在模块中_compile(模块.js:456:26)位于Object.Module_extensions..js(Module.js:474:10)在Module.load(Module.js:356:32)位于Function.Module_load(Module.js:312:12)位于Function.Module.runMain(Module.js:497:10)启动时(node.js:119:16)在node.js:906:3
test2.js的内容:throw new Error('test');
还有:
在JavaScript中,你可以从技术上
throw
那些不是错误的东西,但这应该避免。结果不包括潜在用于获取调用堆栈,也不是用于编程的"name"属性检查,也没有任何有用的属性来描述出了什么问题。
来自Node.js 中的错误处理
您无法从抛出的string
中获取堆栈跟踪。实际上是Error
对象构建了堆栈。
您可能会想到一种变通方法,在捕获异常时构建new Error
,但堆栈跟踪不会返回到抛出的字符串。
解决方案:永远不要抛出字符串,而是使用错误。
- 如何在Chrome扩展内容脚本中获取错误堆栈跟踪
- 正在获取控制台消息的堆栈跟踪
- 如何在Internet Explorer中获取javascript堆栈跟踪.e.stack 返回 “Undefined”
- 网格堆栈.js从 JSON 获取位置
- JavaScript 中的 try-catch:如何获取原始错误的堆栈跟踪或行号
- jquery .on 获取未捕获的范围错误:超出最大调用堆栈大小
- 如何覆盖错误堆栈获取器
- Javascript 获取调用堆栈上的函数数量
- 如何在 Firefox 中获取 JavaScript 堆栈跟踪
- 如何获取堆栈交换 API 使用的所有标签的 JSON 响应
- 在node.js中获取*current*堆栈跟踪(例如,通过SIGINT)
- 在开发Firefox扩展时获取堆栈跟踪
- 没有递归函数,仍然获取超出最大调用堆栈大小的错误
- 在javascript中获取导致错误的调用堆栈
- 从nodejs中抛出的字符串中获取堆栈跟踪
- 有没有一种方法可以从Internet Explorer中的Error对象中获取行号或堆栈跟踪
- 在筛选器上获取所需的堆栈对象
- 堆栈交换API:从用户获取文章列表
- 获取堆栈中具有绝对位置的下一个元素
- 在Chrome中从控制台运行代码时获取堆栈跟踪错误