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

肖恩

在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),因此这可能不再有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

为什么我的最新console.log消息没有显示Requirejs中的main.js更新时

来自分类Dev

为什么Node.js UDP客户端不接收消息?

来自分类Dev

为什么console.log(document.getElementById('blah')))在Chrome中给出不同的日志消息?

来自分类Dev

为什么log_message没有在日志文件中显示消息

来自分类Dev

为什么log_message没有在日志文件中显示消息

来自分类Dev

为什么“ git log”的输出在终端和node.js中的execSync不同

来自分类Dev

为什么node.js需要python

来自分类Dev

为什么将node js用于cordova?

来自分类Dev

为什么 Angular 需要 Node.js?

来自分类Dev

Node.js:collection.forEach(console.log)的行为不同于collection.forEach(function(x){console.log(x)})为什么?

来自分类Dev

为什么未显示错误消息?

来自分类Dev

为什么错误消息没有显示

来自分类Dev

为什么我不能显示错误消息?

来自分类Dev

为什么 AlertDialog 显示空白消息?

来自分类Dev

为什么log4js创建一个空文件却从不将消息放入其中?

来自分类Dev

为什么Node.js + Express不会因错误而崩溃?

来自分类Dev

为什么console.log会这样?

来自分类Dev

为什么消息框显示两次消息?

来自分类Dev

为什么这个方法不会在异常参数中打印消息?

来自分类Dev

为什么我不能捕获从node-postgres抛出的错误?

来自分类Dev

为什么Firebase不让console.log显示颜色?

来自分类Dev

为什么WebIde对alert和console.log显示错误?

来自分类Dev

如果 show 方法不存在,为什么我不会收到错误消息?

来自分类Dev

Node.js - process.exit 并将整个 console.log 消息附加到文本文件中

来自分类Dev

为什么“打印”在node.js中不起作用?

来自分类Dev

为什么node.js转换POST正文?

来自分类Dev

为什么从Node.js连接到MongoDB很慢

来自分类Dev

cron为什么不执行我的node.js脚本?

Related 相关文章

  1. 1

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

  2. 2

    为什么我的最新console.log消息没有显示Requirejs中的main.js更新时

  3. 3

    为什么Node.js UDP客户端不接收消息?

  4. 4

    为什么console.log(document.getElementById('blah')))在Chrome中给出不同的日志消息?

  5. 5

    为什么log_message没有在日志文件中显示消息

  6. 6

    为什么log_message没有在日志文件中显示消息

  7. 7

    为什么“ git log”的输出在终端和node.js中的execSync不同

  8. 8

    为什么node.js需要python

  9. 9

    为什么将node js用于cordova?

  10. 10

    为什么 Angular 需要 Node.js?

  11. 11

    Node.js:collection.forEach(console.log)的行为不同于collection.forEach(function(x){console.log(x)})为什么?

  12. 12

    为什么未显示错误消息?

  13. 13

    为什么错误消息没有显示

  14. 14

    为什么我不能显示错误消息?

  15. 15

    为什么 AlertDialog 显示空白消息?

  16. 16

    为什么log4js创建一个空文件却从不将消息放入其中?

  17. 17

    为什么Node.js + Express不会因错误而崩溃?

  18. 18

    为什么console.log会这样?

  19. 19

    为什么消息框显示两次消息?

  20. 20

    为什么这个方法不会在异常参数中打印消息?

  21. 21

    为什么我不能捕获从node-postgres抛出的错误?

  22. 22

    为什么Firebase不让console.log显示颜色?

  23. 23

    为什么WebIde对alert和console.log显示错误?

  24. 24

    如果 show 方法不存在,为什么我不会收到错误消息?

  25. 25

    Node.js - process.exit 并将整个 console.log 消息附加到文本文件中

  26. 26

    为什么“打印”在node.js中不起作用?

  27. 27

    为什么node.js转换POST正文?

  28. 28

    为什么从Node.js连接到MongoDB很慢

  29. 29

    cron为什么不执行我的node.js脚本?

热门标签

归档