react取消捕获_react取消捕获_react中的错误处理

62286

解决的两个问题

收集错误

自定义事件实现try...catch错误捕获功能同时增加Pause on exceptions功能

react\packages\shared\ReactErrorUtils.js

用于存储错误以及是否发生错误的状态

// Used by Fiber to simulate a try-catch.

let hasError: boolean = false;

let caughtError: mixed = null;

复制代码

需要重新抛出的错误以及重新抛出的状态

// Used by event system to capture/rethrow the first error.

let hasRethrowError: boolean = false;

let rethrowError: mixed = null;

复制代码

reporter对象上的onError方法提供一个借口改变错误的状态以及存储捕获到的错误对象

const reporter = {

onError(error: mixed) {

hasError = true;

caughtError = error;

},

};

复制代码

错误系统入口函数,用于捕获第一个错误

对invokeGuardedCallback的封装,当执行完invokeGuardedCallback之后,通过hasError判断是否发生了错误,并调用clearCaughtError返回错误对象,并清空hasError、caughtError。然后将返回的错误存储到rethrowError,并改变hasRethrowError的状态。

function invokeGuardedCallbackAndCatchFirstError(name,func,context,a,b,c,d,e,f) {

invokeGuardedCallback.apply(this, arguments);

if (hasError) {

const error = clearCaughtError();

if (!hasRethrowError) {

hasRethrowError = true;

rethrowError = error;

}

}

}

export function clearCaughtError() {

if (h

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值