国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

捕獲未處理的Promise錯誤方法

2024-05-06 15:25:40
字體:
來源:轉載
供稿:網友

為了保證可讀性,本文采用意譯而非直譯,并且對源代碼進行了大量修改。另外,本文版權歸原作者所有,翻譯僅用于學習。

使用Promise編寫異步代碼時,使用reject來處理錯誤。有時,開發者通常會忽略這一點,導致一些錯誤沒有得到處理。例如:

function main() {asyncFunc().then(···).then(() => console.log('Done!'));}

由于沒有使用catch方法捕獲錯誤,當asyncFunc()函數reject時,拋出的錯誤則沒有被處理。

這篇博客將分別介紹在瀏覽器與Node.js中,如何捕獲那些未處理的Promise錯誤。

瀏覽器中未處理的Promise錯誤

一些瀏覽器(例如Chrome)能夠捕獲未處理的Promise錯誤。

unhandledrejection

監聽unhandledrejection事件,即可捕獲到未處理的Promise錯誤:

window.addEventListener('unhandledrejection', event => ···);

這個事件是PromiseRejectionEvent實例,它有2個最重要的屬性:

promise: reject的Promise

reason: Promise的reject值

示例代碼:

window.addEventListener('unhandledrejection', event =>{console.log(event.reason); // 打印"Hello, Fundebug!"}); function foo(){Promise.reject('Hello, Fundebug!');} foo();

Fundebug的JavaScript錯誤監控插件監聽了unhandledrejection事件,因此可以自動捕獲未處理Promise錯誤。

rejectionhandled

當一個Promise錯誤最初未被處理,但是稍后又得到了處理,則會觸發rejectionhandled事件:

window.addEventListener('rejectionhandled', event => ···);

這個事件是PromiseRejectionEvent實例。

示例代碼:

window.addEventListener('unhandledrejection', event =>{console.log(event.reason); // 打印"Hello, Fundebug!"}); window.addEventListener('rejectionhandled', event =>{console.log('rejection handled'); // 1秒后打印"rejection handled"});  function foo(){return Promise.reject('Hello, Fundebug!');} var r = foo(); setTimeout(() =>{r.catch(e =>{});}, 1000);

Node.js中未處理的Promise錯誤

監聽unhandledRejection事件,即可捕獲到未處理的Promise錯誤:

process.on('unhandledRejection', (reason, promise) => ···);

示例代碼:

process.on('unhandledRejection', reason =>{console.log(reason); // 打印"Hello, Fundebug!"}); function foo(){Promise.reject('Hello, Fundebug!');} foo();

注: Node.js v6.6.0+ 默認會報告未處理的Promise錯誤,因此不去監聽unhandledrejection事件也沒問題。

Fundebug的Node.js錯誤監控插件監聽了unhandledRejection事件,因此可以自動捕獲未處理Promise錯誤。

以上這篇捕獲未處理的Promise錯誤方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 万荣县| 石林| 资中县| 吐鲁番市| 淅川县| 阳东县| 抚宁县| 循化| 平原县| 泰州市| 皋兰县| 偏关县| 宜丰县| 肇州县| 新巴尔虎右旗| 安福县| 苏尼特右旗| 界首市| 河曲县| 吉水县| 南江县| 玉溪市| 盐源县| 朝阳县| 太和县| 钟祥市| 抚宁县| 嘉荫县| 句容市| 大宁县| 涪陵区| 江孜县| 九台市| 潜江市| 襄垣县| 崇左市| 嵊州市| 合阳县| 额尔古纳市| 阳春市| 苍溪县|