抛出新的错误不会抛出而node.js不会抱怨不存在的变量

时间:2016-05-06 01:07:03

标签: javascript node.js

我相信我对node.js有一些问题,至少4个月,但刚才我想修复。我已经尝试重新安装,目前我正在使用6.0.0。

我的新错误('消息');当我尝试这样做时,引擎会忽略它:

console.log('test');
throw new Error('error');
console.log('test');

我只看到:

test
test

另外,当我尝试在不存在的变量中调试console.log时,没有任何反应。

可能是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您的代码上下文可能会让您感到困惑。如果您向我们展示了此代码的上下文,并且您更改了第二个console.log('test');输出,那么我们可以帮助您解决这个问题,这样您就可以区分执行的第二个日志语句与刚刚调用两次的代码之间的区别(这是我的猜测。)

而且,作为对节点安装的一个测试,我建议您使用这组代码并将其放在名为throw-test.js的文件中并运行该文件:

// throw-test.js

try {
    console.log('test1');
    throw new Error('error');
    console.log('test2');
} catch(e) {
    console.log('log exception');
}

运行node throw-test.js时,您应该会在控制台中看到此内容:

test1
log exception

这正是我在运行node.js时所看到的,也是我所期待的。

其他可能使情况混乱的事情:

  1. 您的代码可能会被调用两次,这就是您获得输出的原因。
  2. 您的代码可能位于异常回调中,该回调会占用异常(这就是您没有看到任何异常记录的原因)。
  3. 您的代码中的其他地方有一个console.log('test'),这就是您看到其中两个的原因。
  4. 至于你的其他评论,代码:

    console.log(nonExistent);
    

    会抛出ReferenceError个异常。您是否在日志中看到该异常取决于此代码的位置。同样,如果它在异步回调中,则可能会吃掉异常(取决于特定的回调)。