【发布时间】:2018-07-19 02:24:07
【问题描述】:
我有一个失败的异步函数:
async function main() {
// fails
throw 'some error';
}
main();
传播此异常以结束程序执行的正确方法是什么?
这是:
main().catch(err => { console.log(err); process.exit(1); });
正确的方法还是有更好的模式?
【问题讨论】:
-
我希望它作为一个未处理的异常来停止程序执行。好像
main()不是异步的并且从中抛出了异常。 -
什么都不做会产生同样的结果,不是吗?
-
在这种情况下,它会打印一条警告,指出不推荐使用未处理的承诺拒绝,并且程序以代码 0 退出(成功)
-
那么您从未处理过拒绝,这就是警告。您很可能还有一些其他异步功能没有返回/等待。
-
其实这个函数返回一个promise,你可以在调用函数中处理它。如果你想在 main 中记录一些东西或产生一种新类型的异常,你可以抛出那个。
标签: javascript node.js