[英]How can I throw an error from within a catch, without it being an UnhandledPromiseRejection
如果我只是抛出一个随机错误,我的代码可以正常工作:
throw new Error('you got error')
但如果我想从 a.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 拒绝的方式从 catch 中抛出异常?
如果您只是想记录未处理的 promise 拒绝以进行诊断,您可以这样做:
process.on('unhandledRejection', (reason, promise) => {
console.log('Unhandled Rejection at:', promise, 'reason:', reason);
// Application specific logging, throwing an error, or other logic here
});
请参阅此处的文档。
正如我之前所说,这不应该是您实际处理 promise 拒绝的方式。 它们应该在您自己的代码中的较低级别捕获,您可以在其中具有创建错误的特定操作的精确上下文。 此代码应仅用于诊断调试,然后在 go 并修复未处理 promise 拒绝的实际代码应该处理的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.