捕获node.js未定义的变量

时间:2012-02-15 21:37:43

标签: javascript debugging node.js

在浏览器中的正常Javascript中,当您尝试使用未定义的变量时,Google Chrome将在控制台中显示错误。但是在Node.js中没有显示错误,我认为使用未定义变量的函数退出。

我添加了:

process.on('uncaughtException', function(err) {
    console.log( 'uncaughtException :', err );
});

但是没有执行。

我还在调用函数中添加了try-catch,并且没有异常。

我正在使用:“use strict”;

所以我的问题是,当访问未定义的变量时,是否有某种方法可以获得/看到错误?

2 个答案:

答案 0 :(得分:1)

Node会自动执行此操作。

// test.js
"use strict";

function badFunction() {
    return iDontExist + 3;
}

badFunction();

然后:

C:\Users\Domenic\Programming>node test.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
ReferenceError: iDontExist is not defined
    at badFunction (C:\Users\Domenic\Programming\test.js:4:12)
    at Object.<anonymous> (C:\Users\Domenic\Programming\test.js:7:1)
    at Module._compile (module.js:444:26)
    at Object..js (module.js:462:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:482:10)
    at EventEmitter._tickCallback (node.js:192:40)

答案 1 :(得分:0)

我没有看到此异常的原因是其他异常处理程序代码在节点之前进入。请参阅上面的回复。 MongoDB驱动程序。

欢迎任何其他建议。这是捕获异常的代码:

          catch (err) {
            var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{
              sizeOfMessage:self.sizeOfMessage, 
              bytesRead:self.bytesRead,
              stubBuffer:self.stubBuffer}};
            if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
            // We got a parse Error fire it off then keep going
            self.emit("parseError", errorObject, self);
          }              

内维尔