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);
}
總結
以上是生活随笔為你收集整理的react取消捕获_react 异常捕获的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古茗公布2023年战略目标:总门店数要破
- 下一篇: 公众号知道我浏览他吗_公众号可以看到访客