react取消捕获_react 异常捕获
參考
這些人的腦洞可真大...
用戶的執(zhí)行函數(shù)
const f = () => JSON.parse();
const test = () => {
console.log("test 1");
f();
console.log("test 2");
};
使用try-catch
必須開啟兩個(gè)才能在異常位置停下來
const wrapProd = (fn) => {
try {
fn();
} catch (e) {
console.log("try", e);
}
};
console.log("wrap1");
wrapProd(test);
console.log("wrap2");
使用window的error事件
可以停到代碼異常位置
但是代碼卻無法繼續(xù)向下執(zhí)行
const wrapDev = (fn) => {
const handler = (e) => {
console.log("handler", e);
};
window.addEventListener("error", handler);
fn();
window.removeEventListener("error", handler);
};
使用node結(jié)點(diǎn)派發(fā)函數(shù)的方式
可以停留也能繼續(xù)執(zhí)行
function wrapDev2(func) {
function handleWindowError(e) {
// 收集錯(cuò)誤交給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);
}
總結(jié)
以上是生活随笔為你收集整理的react取消捕获_react 异常捕获的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古茗公布2023年战略目标:总门店数要破
- 下一篇: 公众号知道我浏览他吗_公众号可以看到访客