如果我只是抛出一个随机错误,我的代码可以正常工作:
throw new Error('you got error')
但是如果我想从.catch语句中抛出它,就像这样:message.react(e).catch(()=>{throw new Error('you got error')});
然后,我得到错误记录如下:(node:21609) UnhandledPromiseRejectionWarning: Error: you got error
,并且没有被我的上层错误处理程序捕获://errors from within catch() don't reach this
process.on('uncaughtException', function(err){ console.log('error caught', err); });
我不想使用Promise,但是不幸的是,这是我没有选择的库中的内容。我如何以一种不是未处理的 promise 拒绝的方式从异常中抛出异常?
最佳答案
如果您仅出于诊断目的而尝试记录未处理的 promise 拒绝,则可以执行以下操作:
process.on('unhandledRejection', (reason, promise) => {
console.log('Unhandled Rejection at:', promise, 'reason:', reason);
// Application specific logging, throwing an error, or other logic here
});
参见doc here。就像我之前说过的那样,这不应该是您实际处理 promise 拒绝的方式。应该将它们捕获在您自己的较低级别的代码中,在该代码中,您具有特定的创建错误的特定操作的上下文。该代码应该仅用于诊断调试,然后再在未处理的地方修复应处理的 promise 拒绝的实际代码。
关于javascript - 我如何从一个catch中抛出一个错误,而不将其变为UnhandledPromiseRejection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65101343/