免责声明:我知道在未定义状态下不退出应用程序的做法有多么糟糕。我打算将其仅用于测试,因为我想知道是否完全可能。
我认为通过处理process
uncaughtException
事件,可以防止Node.js 8+关闭,但是以下脚本在第一个throw
之后完成
process.on('uncaughtException', err => {
console.log(err, 'Uncaught Exception thrown');
// process.exit(1);
});
console.log("before throwing the first time")
throw 42;
console.log("before throwing once again")
throw 42;
console.log("after throwing a 2nd time")
如何预防?
答案 0 :(得分:5)
您的异常处理程序在做正确的事情。节点退出的原因是因为您没有其他事件要处理。如果您还有其他事件,则该过程将继续运行:
process.on('uncaughtException', err => {
console.log(err, 'Uncaught Exception thrown');
// process.exit(1);
});
setTimeout(function() { console.log('still running') }, 1000)
console.log("before throwing the first time")
throw 42;
console.log("before throwing once again")
throw 42;
console.log("after throwing a 2nd time")