为什么在节点服务器上进行测试时,使用下面这个简单的代码会出现以下错误?
code/app2/i.js:35
throw new Error("here")
^
Error: here
我实际上希望看到堆栈跟踪as per the book 'Smashing node.js'(picture of the relevant page 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();
答案 0 :(得分:18)
您没有看到整个堆栈跟踪,因为您在A()异步(使用setTimeout)中抛出错误。如果你同步抛出它 - 你会看到跟踪c() - &gt; b() - &gt; a()。
答案 1 :(得分:6)
这是您的代码所做的: 它调用方法&#39; c&#39;,调用方法&#39; b&#39;,调用方法&#39; a&#39 ;,这会引发错误(在方法内部&#39; a&#39; ;有一个抛出错误声明)。
您发布的是堆栈跟踪(它显示了发生错误的文件中的行)。
答案 2 :(得分:-4)
该功能显示输出。抛出新错误。