繁体   English   中英

如何在捕获中抛出错误,而不是 UnhandledPromiseRejection

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM