国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

捕獲未處理的Promise錯誤

HackerShell / 3121人閱讀

摘要:的錯誤監控插件監聽了事件,因此可以自動捕獲未處理錯誤。自從年雙十一正式上線,累計處理了億錯誤事件,付費客戶有金山軟件百姓網等眾多品牌企業。

譯者按: 通過監聽unhandledrejection事件,可以捕獲未處理的Promise錯誤。

原文: Tracking unhandled rejected Promises

譯者: Fundebug

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

使用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 Rejection Events Sample

Event: "unhandledRejection"

關于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線上應用實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了10億+錯誤事件,付費客戶有Google、360、金山軟件、百姓網等眾多品牌企業。歡迎大家免費試用!

版權聲明

轉載時請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/10/09/unhandled-pomise-rejection/

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89113.html

相關文章

  • 【筆記】你不知道JS讀書筆記——Promise

    摘要:寫在前面這一章的順序對于未接觸過使用過的童鞋而言略抽象了,前邊幾章主要為了說明和之前的異步方式相比有什么優勢和它能解決什么問題,后邊才詳解的設計和各種場景下如何使用。建議先了解和簡單使用過后再閱讀,效果更佳。 寫在前面:Promise這一章的順序對于未接觸過使用過Promise的童鞋而言略抽象了,前邊幾章主要為了說明Promise和之前的異步方式相比有什么優勢和它能解決什么問題,后邊才...

    mumumu 評論0 收藏0
  • 【ES6腳丫系列】Promise

    摘要:三種狀態進行中已完成,又稱已失敗。如果的狀態是,那么的回調函數就會等待的狀態改變,在此之前不會有結果。等價于例子例子的概念是實例的別名,用于指定發生錯誤時的回調函數。 『ES6知識點總結』變量的解構賦值 本文主要內容如下:1 Promise是什么?1.1 特點:1.2 三種狀態:1.3 用處:1.4 Promise缺點:1.5 歷史過程2 生成promise實例3 pr...

    BoYang 評論0 收藏0
  • 前端魔法堂——異常不僅僅是try/catch

    摘要:我打算分成前端魔法堂異常不僅僅是和前端魔法堂調用棧,異常實例中的寶藏兩篇分別敘述內置自定義異常類,捕獲運行時異常語法異常網絡請求異常事件,什么是調用棧和如何獲取調用棧的相關信息。 前言 ?編程時我們往往拿到的是業務流程正確的業務說明文檔或規范,但實際開發中卻布滿荊棘和例外情況,而這些例外中包含業務用例的例外,也包含技術上的例外。對于業務用例的例外我們別無它法,必須要求實施人員與用戶共同...

    bladefury 評論0 收藏0
  • promise學習筆記

    摘要:第一個回調函數完成以后,會將返回結果作為參數,傳入第二個回調函數。采用鏈式的,可以指定一組按照次序調用的回調函數。這時,第二個方法指定的回調函數,就會等待這個新的對象狀態發生變化。方法是的別名,用于指定發生錯誤時的回調函數。 本文我是在學習阮一峰老師的ECMAScript 6 入門的Promise章節時,為了加深記憶,通篇都是照抄原文的。原文地址:阮一峰ECMAScipt入門 1.Pr...

    mykurisu 評論0 收藏0
  • promise

    摘要:是一個對象,它的內部其實有三種狀態。已拒絕的異步操作未成功結束。方法則是將對象的狀態改變為失敗,同時將錯誤的信息傳遞到后續錯誤處理的操作。在第二個中拿到數據并且捕獲。使用的寫法比一般的寫法更加清晰明確。 ## 前言 今天來分享下promise的用法,es6偉大發明之一,當初我學習的時候也是蠻頭大的,不知道為啥,整個腦子就是,我在哪,我要干啥的懵圈,后面認真學習之后,覺得真是十分好用,下...

    jay_tian 評論0 收藏0

發表評論

0條評論

HackerShell

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<