process.exit()
process.exit
方法用来退出当前进程。它可以接受一个数值参数,如果参数大于0,表示执行失败;如果等于0表示执行成功。
if (err) {
process.exit(1);
} else {
process.exit(0);
}
如果不带有参数,exit
方法的参数默认为0。
注意,process.exit()
很多时候是不需要的。因为如果没有错误,一旦事件循环之中没有待完成的任务,Node 本来就会退出进程,不需要调用process.exit(0)
。这时如果调用了,进程会立刻退出,不管有没有异步任务还在执行,所以不如等 Node 自然退出。另一方面,如果发生错误,Node 往往也会退出进程,也不一定要调用process.exit(1)
。
function printUsageStdout() {
process.stdout.write('...some long text ...');
}
if (true) {
printUsageToStdout();
process.exit(1);
}
上面的代码可能不会达到预期效果。因为process.stdout
有时会变成异步,不能保证一定会在当前事件循环之中输出所有内容,而process.exit
会使当前进程立刻退出。
更安全的方法是使用exitcode
属性,指定退出状态,然后再抛出一个错误。
if (true) {
printUsageToStdout();
process.exitCode = 1;
throw new Error("xx condition failed");
}
process.exit()
执行时,会触发exit
事件。