gpt4 book ai didi

javascript - 在 Node.js 中处理 fatal error 的正确方法

转载 作者:行者123 更新时间:2023-12-05 00:33:01 24 4
gpt4 key购买 nike

根据Node.js documentation通常,使用 process.exit() 不是一个好主意因为像 console.log() 这样的异步 IO 操作或其他日志记录方法(在我的情况下为 Pino 日志库)可能会被跳过,进程在完成任务之前退出。我想知道处理函数内部错误的最佳方法是什么。我的最终目标是处理函数中的错误,如果错误是 fatal error ,则退出该过程。
我写了一个我目前认为是最佳选择的简化版本(类似于 Node.js 文档中解释的解决方案):

const validateUserInput = (input) => {
try {
if (input === 'wrong') { throw new Error('sample error'); } // simplified
} catch (err) {
console.log('last message');
// process.exit(1) --> using this might skip IO operation like the log on previous line
process.exitCode = 1;
return false;
}
return true;
};

if (validateUserInput('wrong')) {
// rest of the code
}

// nothing should be written here

最佳答案

SIGTERM is the signal that tells a process to gracefully terminate. Itis the signal that's sent from process managers like upstart orsupervisord and many others.

You can send this signal from inside the program, in another function: read more

process.kill(process.pid, 'SIGTERM')
您还可以为此事件设置自己的监听器,并执行其他任务。
process.on('SIGTERM', () => {
server.close(() => {
console.log('Shutting down the application ...')
})
})
但是 SIGTERM windows不支持,所以可以使用 SIGINT相反,这里有一个关于 SIGINT 的有用信息

After the SIGINT signal is received, the Node.js server initiates ashutdown sequence and enters shutdown mode. All of the existingrequests are completed and no new requests are entertained. When thelast request completes, the server closes all of the connections andshuts down. read more


关于流程的更多信息 here

关于javascript - 在 Node.js 中处理 fatal error 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70522687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com