全局捕获promise异常

场景:B端产品客户需求:不希望打开页面就看到都是报错(尽管不影响业务)
原因:在开发过程中,这种报错大多数是因为Promise没有进行catch((err)=>{处理err})

function main() {
    asyncFunc().then(() => console.log('Done!'));
}

解决方案:

通过添加监听unhandledrejection事件获取由于未处理catch的promise

window.addEventListener('unhandledrejection', function (event) {
  处理事件对象
    event.reason //获取到catch的err的原因(内容) 与控制台报错一致
    event.promise //获取到未处理的promise对象
    .....
});

处理事件对象:

event && event.preventDefault() //通过阻止事件的默认行为,阻止控制台报错

注: Node.js v6.6.0+ 默认会报告未处理的Promise错误,因此不去监听unhandledrejection事件也没问题。

Fundebug的Node.js错误监控插件监听了unhandledRejection事件,因此可以自动捕获未处理Promise错误。

另: node.js端也有相应的处理方法,可借鉴:全局 Promise 异常捕捉 - 简书

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值