我的代码结构是这样的:
A();
function A() {
try {
// something that can generate an error
console.log('\nIn A()');
B();
} catch (e) {
console.log(e);
}
}
function B() {
try {
console.log('\nIn B()');
C()
} catch (e) {
console.log(e);
}
}
function C() {
try {
console.log('\nIn C()');
} catch (e) {
console.log(e)
}
}
我观察到的是,如果生成异常,它会进入catch块,打印console.log。但是不会终止代码。我已经读过catch不会终止,但由于控件没有转移到别处,为什么进程挂起?我还尝试创建一个记录错误的函数,并从catch块调用。它进入功能&又挂了。
我是Node JS中的错误处理新手。任何帮助,将不胜感激。
答案 0 :(得分:1)
您提供的代码运行没有错误。
A();
function A() {
try {
// something that can generate an error
console.log('\nIn A()');
B();
} catch (e) {
console.log(e);
}
}
function B() {
try {
console.log('\nIn B()');
C()
} catch (e) {
console.log(e);
}
}
function C() {
try {
console.log('\nIn C()');
} catch (e) {
console.log(e)
}
}
答案 1 :(得分:0)
它与级联函数调用无关。这是因为用于从命令行获取用户输入的读取流未关闭。如果流保持打开状态或任何异步调用尚未完成,则节点不会终止。