在promise链中调用process.exit()的正确位置
在理解节点进程和承诺链的交互时遇到问题:
doSomethingAsync()
.then()
.then()
.catch()
.finally();
最后介绍了关闭doSomethingAsync()内部打开的数据库连接。
问题:错误中的process.exit(1)
在哪个块中正确属于?
- 在
.catch()
中,因为那是错误发生的地方,或者 - 在
.finally()
,因为这是应该发生的最后一件事? (但如果出现错误并且触发了catch()
,那么连接是否会被释放)? - 无处,因为节点已经知道程序失败了?
如果目标是在发生错误时让应用程序终止,那么我根本不会捕获异常
async function doSomething() {
try {
const result = await doSomethingAsync();
// do something with result
} finally {
// do cleanup
}
}
使用async
/ await
语法将允许Promise抛出错误,未捕获的异常将终止应用程序。无论是否抛出错误,finally
块都将运行。