日期:2014-05-16 浏览次数:20336 次
本文是对nodejs0.8.8版本的api开发手册解读.nodejs网址
进程(process)
process对象是一个全局对象,它可以在任何地方被访问.它是一个EventEmitter对象的实例.
Event:'exit'
当一个进程即将退出时放出'exit'事件,这一个用来定时检查模块的状态的好钩子(hook)(例如单元测试),当主事件循环在执行完'exit'的回调函数后将不再执行,所以在exit事件中定义的定时器可能不会被加入事件列表.
监听'exit'事件的例子:
process.on('exit', function () {
process.nextTick(function () {
console.log('This will not run');
});
console.log('About to exit.');
});
Event:'uncaughtException'
当一个异常冒泡循环一圈又回到node事件循环时放出'uncaughtException'.如果这个异常被添加了一个监听器,默认操作(打印堆栈信息并退出)将不会执行.
监听'uncaughtException'事件的例子:
process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});
setTimeout(function () {
console.log('This will still run.');
}, 500);
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');
注意:uncaughtException是一个很低级的异常处理,在将来可能被移除.
不要使用它,用domains代替(后面会讲),如果你非用不可,只好每次在程序发生异常之后重启.
不要把它和'On Error Resume Next'一起用,因为一个未处理的异常意味着你的程序--甚至是node.js自己--在一个未定义的状态.盲目的恢复继续执行疑问这任何事都可能发生.
想像一下,在你正在升级你的系统的时候拉扯主机电源线,十有八九可能什么都不会发生--但是第十次,你的系统会瘫痪.
你已经被警告过了.
信号事件(signal Events)
当进程接受到一个信号时发出'singal'事件.可以使用sigaction(2)(linux系统下)查看标准的posix 信号命名列表,例如:SIGINT,SIGUSR1,等等.
监听'signal'事件的例子:
// Start reading from stdin so we don't exit.
process.stdin.resume();
process.on('SIGINT', function () {
console.log('Got SIGINT. Press Control-D to exit.');
});
一个简单的方式发送SIGINT信号的方法是:control-c,在大多是终端程序里.