繁体   English   中英

如果方法抛出异常,Node.js:console.log消息不显示...为什么?

[英]Node.js: console.log message doesn't show up if method throws exception… why?

在Node.js中,如果我有一个抛出异常的方法,那么该方法的console.log语句不会触发。 我认识到在下面的简单测试用例中,我应该从readFileSync调用中捕获异常,否则就会对它采取防御措施。 只是好奇是否有人可以向我解释这种行为。

简单的测试案例:

var fs = require('fs');

function readAFileThatDoesntExist(filename) {
    console.log(filename);
    fs.readFileSync(filename);
}

console.log("We're about to read a file that doesn't exist!");
readAFileThatDoesntExist("afile");

输出:

$ node test.js
We're about to read a file that doesn't exist!

fs.js:338
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT, no such file or directory 'C:\blog\projects\bloggen\scripts\afile'
    at Object.fs.openSync (fs.js:338:18)
    at Object.fs.readFileSync (fs.js:182:15)
    at readAFileThatDoesntExist (C:\blog\projects\bloggen\scripts\test.js:5:8)
    at Object.<anonymous> (C:\blog\projects\bloggen\scripts\test.js:9:1)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

啊,弄清楚了。

似乎console.log在进程退出之前没有完成...如果我使用console.warn,则消息确实显示出来。

这篇文章解释说: node.js的console.log是异步的吗?

另外,我的版本较旧(0.8.15),因此可能不再适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM