国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

獲取 PromiseRejectionEvent 的位置信息
P粉447785031
P粉447785031 2024-02-17 18:06:26
0
1
644

我有一些代碼,其中 async 函數(shù)可能會拋出錯誤,我正在使用 unhandledrejection 事件處理它們,因為那些未捕獲的 throw 不會觸發(fā) error 事件,因為它們發(fā)生在 Promise 內(nèi)。因此,我的錯誤處理程序正在獲取 PromiseRejectionEvent 而不是 ErrorEvent。

到目前為止,一切順利,錯誤處理工作正常。

但是我這里有一個小問題,那就是 PromiseRejectionEvent 事件缺少位置信息,與 ErrorEvent 事件不同,將位置放入引發(fā)錯誤的代碼中將非常有用.

當(dāng)代碼未使用 async 函數(shù),并且處理程序獲取 ErrorEvent 事件時,需要使用 event.filename、event.linenoevent.colno,但 PromiseRejectionEventphpcnend 中缺少這些cphpcn活動。

SO 我的問題是:我可以以任何方式包裝 PromiseRejectionEvent 并重新分派它,以便最終我有一個帶有位置信息的 ErrorEvent 嗎?

我嘗試過這樣的事情:

bigFunctionWithAllTheCodeIncludingAsyncFunctions()
.catch(error => {
    const errorEvent = new ErrorEvent('unhandledrejection', {
            'error': error,
    });
    window.dispatchEvent(errorEvent);
});

上面的代碼生成了一個正確的 ErrorEvent 以及相關(guān)的錯誤信息但是所有位置信息都是無用的(0 表示行和列,'' 表示文件名)。

順便說一句,我已經(jīng)檢查了在 unhandledrejection 事件處理程序中獲取堆棧跟蹤,但目前我無法使用自定義類將 Promise 包裝在我的代碼中。

提前非常感謝:)

P粉447785031
P粉447785031

全部回復(fù)(1)
P粉835428659

是的!但不能通過自己構(gòu)建和調(diào)度 ErrorEvent 來實現(xiàn)。相反,您可以使用 reportError

window.onunhandledrejection = event => {
  reportError(event.reason);
};

window.onerror = (...args) => {
  console.log('onerror', args);
};

(async function() { throw new Error("oops"); }());
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板