javascript - uncaughtException 后退出进程
问题描述
在我的 NodeJS 应用程序中,每当遇到未处理的异常时,我都希望进程退出。
但是,根据 NodeJS 的文档,它似乎默认退出。所以我的问题是——我的代码中应该有这样的东西吗?
process
.on('uncaughtException', (err) => {
log.error('uncaughtException:', err.message);
log.error(err.stack);
process.exit(1);
});
或者我应该把process.exit(1)
它排除在外,因为它不需要吗?
解决方案
该部分process.exit(1)
是必需的,默认情况下它不会退出,您的应用程序可能会以意外状态终止,因此您应该process.exit(1)
输入uncaughtException
unhandledRejection
但是,放置事件(如果您在应用程序中使用s)也是一个很好的做法,Promise
以便您更好地了解发生了什么。
process
.on('unhandledRejection', (reason, p) => {
console.error(reason, 'Unhandled Rejection at Promise', p);
})
.on('uncaughtException', err => {
console.error(err, 'Uncaught Exception thrown');
process.exit(1);
});
此外作为旁注(达里奥提到,并在此处引用官方文档,请参阅文档)
'uncaughtException' 的正确用法是在关闭进程之前同步清理分配的资源(例如文件描述符、句柄等)。
推荐阅读
- android - 如何以编程方式使 ImageView 的宽度 match_parent(不在 XML 中)
- python - 在 Pandas 中将 1-1 转换为 Jan 1 的任何简单方法?
- entity-framework - 从 MS-SQL 读取 Serilog 日志(EntityFramework?)
- server - IBM MQ 服务器已关闭,因为磁盘空间为 100%。如何清除这个队列?
- client - 如何在 Aqueduct auth 中列出/删除客户?
- html - Html 没有更新 ajax 请求(woodpress、woocomerce)
- java - 使用 Pair 作为 LinkedHashMap (Java) 中的键
- python - 小数中的小整数错误,两个参数都应该是 Rational 实例
- list - 有没有办法在循环之外初始化一个列表,它是否被删除并在飞镖中重用?
- linux - 如何解决错误“do_package: ... not shipping in any package”?