在浏览器中的正常Javascript中,当您尝试使用未定义的变量时,Google Chrome将在控制台中显示错误。但是在Node.js中没有显示错误,我认为使用未定义变量的函数退出。
我添加了:
process.on('uncaughtException', function(err) {
console.log( 'uncaughtException :', err );
});
但是没有执行。
我还在调用函数中添加了try-catch,并且没有异常。
我正在使用:“use strict”;
所以我的问题是,当访问未定义的变量时,是否有某种方法可以获得/看到错误?
答案 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);
}
内维尔