节点JS在一串函数调用

时间:2018-04-18 06:08:54

标签: node.js error-handling try-catch hang function-calls

我的代码结构是这样的:

    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中的错误处理新手。任何帮助,将不胜感激。

2 个答案:

答案 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)

它与级联函数调用无关。这是因为用于从命令行获取用户输入的读取流未关闭。如果流保持打开状态或任何异步调用尚未完成,则节点不会终止。