为什么没有看到带有'throw new Error'的堆栈跟踪?
Why am I not seeing a stack trace with 'throw new Error'?
在节点服务器上测试时,为什么使用下面的简单代码会得到以下错误?
code/app2/i.js:35
throw new Error("here")
^
Error: here
我实际上希望看到一个堆栈跟踪按照书"Smashing node.js"(相关第35页的图片):
* node uncaught-http-js
/uncaught-http.js:4
throw new Error("here");
^
Error: This will be uncaught
at Server.<anonymous> (/uncaught-http.js:4:9)
at Server.emit(events.js:70:17)
at HttpParser.onIncoming(http.js:1514:12)
at HttpParser.onHeadersComplete(http.js:102:31)
at Socket.andata (http.js:1410:22)
at TCP.onread(net.js:354:27)
但这并没有发生
代码如下:
function c () {
b();
};
function b () {
a();
};
function a () {
setTimeout(function () {
throw new Error('here');
}, 10);
};
c();
您看不到整个堆栈跟踪,因为您在A() 异步(使用setTimeout)中抛出错误。如果你同步抛出它-你会看到跟踪c()->b()->a()。
试试吧:http://jsbin.com/yirorimewe/1/edit?js,console
你的代码是这样做的:它调用方法'c',方法'b'调用方法'b',方法'a'抛出一个错误(方法'a'内部有一个抛出错误语句)。
您发布的是堆栈跟踪(它显示文件中发生错误的行)。
函数正在显示输出。抛出新的错误。
相关文章:
- Rails File_field最大堆栈大小
- d3中堆栈函数和嵌套函数之间的差异
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- jQuery Error adadvisor.net
- 为什么我的JavaScript堆栈排序函数不起作用
- 超过了async.detect最大调用堆栈大小
- 如何远程检查JavaScript应用程序的函数调用堆栈
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- 类型error primeFactors.for不是函数
- 超过了最大调用堆栈大小,循环无限
- Array.every返回false,而不是类型error
- Fresh Spark Install+Homestead上的Vue异步堆栈跟踪错误
- datatables.net ajax error - http://datatables.net/tn/7
- 超过了最大调用堆栈大小.递归标签
- 使用MEAN堆栈-查询MongoDB并将值作为变量传递
- 日志:未捕获的范围错误:超过了最大调用堆栈大小
- Error: timers.js:234 callback.apply(timer, args);
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- 有没有一种方法可以从Internet Explorer中的Error对象中获取行号或堆栈跟踪
- 为什么没有看到带有'throw new Error'的堆栈跟踪?