react取消捕获_react 异常捕获

参考

这些人的脑洞可真大...

用户的执行函数

const f = () => JSON.parse();

const test = () => {

console.log("test 1");

f();

console.log("test 2");

};

使用try-catch

必须开启两个才能在异常位置停下来

const wrapProd = (fn) => {

try {

fn();

} catch (e) {

console.log("try", e);

}

};

console.log("wrap1");

wrapProd(test);

console.log("wrap2");

使用window的error事件

可以停到代码异常位置

但是代码却无法继续向下执行

const wrapDev = (fn) => {

const handler = (e) => {

console.log("handler", e);

};

window.addEventListener("error", handler);

fn();

window.removeEventListener("error", handler);

};

使用node结点派发函数的方式

可以停留也能继续执行

function wrapDev2(func) {

function handleWindowError(e) {

// 收集错误交给Error Boundary处理

console.log("handle2", e);

}

function callCallback() {

fakeNode.removeEventListener(evtType, callCallback, false);

func();

}

const event = document.createEvent("Event");

const fakeNode = document.createElement("fake");

const evtType = "fake-event";

window.addEventListener("error", handleWindowError);

fakeNode.addEventListener(evtType, callCallback, false);

event.initEvent(evtType, false, false);

fakeNode.dispatchEvent(event);

window.removeEventListener("error", handleWindowError);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值