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

資訊專欄INFORMATION COLUMN

99%的程序都沒有考慮的網(wǎng)絡(luò)異常?使用Fundebug.notify()主動(dòng)上報(bào)

ChanceWong / 1284人閱讀

摘要:而且官方也給出了示例在回調(diào)函數(shù)中上報(bào)異常為了確保完全掌握小程序的運(yùn)行狀況,我們將異常上報(bào)。的微信小程序插件除了可以自動(dòng)捕獲異常外,還支持通過接口主動(dòng)上報(bào)異常。

近日看到一篇文章99%的程序都沒有考慮的網(wǎng)絡(luò)異常,開篇提到:

絕大多數(shù)程序只考慮了接口正常工作的場(chǎng)景,而用戶在使用我們的產(chǎn)品時(shí)遇到的各類異常,全都丟在看似 ok 的 try catch 中。如果沒有做好異常的兼容和兜底處理,會(huì)極大的影響用戶體驗(yàn),嚴(yán)重的還會(huì)帶來安全和資損風(fēng)險(xiǎn)。

于是,筆者分析了 GitHub 上的一些開源微信小程序,發(fā)現(xiàn)大多數(shù)的代碼異常處理確實(shí)是不夠的。

登錄接口只考慮成功的情況,沒考慮失敗的情況

//調(diào)用登錄接口
wx.login({
    success: function() {
        wx.getUserInfo({
            success: function(res) {
                that.globalData.userInfo = res.userInfo;
                typeof cb == "function" && cb(that.globalData.userInfo);
            }
        });
    }
});

網(wǎng)絡(luò)請(qǐng)求只考慮then不考慮catch

util.getData(index_api).then(function(data) {
    //this.setData({
    //
    //});
    console.log(data);
});

考慮了異常情況但是沒有做妥善的處理

db.collection("config")
    .where({})
    .get()
    .then(res => {
        console.log(res);
        if (res.data.length > 0) {
            Taro.setStorage({
                key: "config_gitter",
                data: res.data[0]
            });
        }
    })
    .catch(err => {
        console.error(err);
    });

也許 99%的情況下接口都是正常返回的,只有 1%的情況會(huì)失敗。看起來好像不是一件嚴(yán)重的事情,但是考慮到用戶的量級(jí),這個(gè)事情就不那么簡(jiǎn)單了。假設(shè)有 100 萬用戶,那么就有 1 萬用戶遇到異常情況,而且如果用戶的使用頻次很高,影響的何止 1 萬用戶。并且,如今產(chǎn)品都是體驗(yàn)至上,如果遇到這樣的問題,用戶極大可能就棄你而去,流失了客戶就等于流失了收入。

如何妥善地處理接口異常的情況是一件嚴(yán)肅的事情,應(yīng)當(dāng)被重視起來。

妥善處理請(qǐng)求異常

那么,應(yīng)當(dāng)如何做呢?首先要定義請(qǐng)求異常的處理代碼,比如微信開放接口的參數(shù)中有fail(“接口調(diào)用失敗的回調(diào)函數(shù)”)、Promise 的catch部分;其次,根據(jù)異常可能導(dǎo)致的后果,在函數(shù)中做相應(yīng)的處理。如果會(huì)導(dǎo)致后續(xù)操作失敗、或則界面無反饋,那么應(yīng)當(dāng)在 fail 回調(diào)中正確處理;如果你真的認(rèn)為基本不可能出問題,那么至少寫個(gè)異常上報(bào)。即使出錯(cuò)了,也知道具體的情況。

下圖是微信支付接口的參數(shù)列表,其中包含了接口調(diào)用失敗的回調(diào)函數(shù)(fail)。

而且官方也給出了示例:

wx.requestPayment({
    timeStamp: "",
    nonceStr: "",
    package: "",
    signType: "MD5",
    paySign: "",
    success(res) {},
    fail(res) {}
});
在回調(diào)函數(shù)fail中上報(bào)異常

為了確保完全掌握小程序的運(yùn)行狀況,我們將異常上報(bào)。Fundebug 的微信小程序插件除了可以自動(dòng)捕獲異常外,還支持通過API 接口主動(dòng)上報(bào)異常。

根據(jù)其官方文檔:

使用 fundebug.notify(),可以將自定義的錯(cuò)誤信息發(fā)送到 Fundebug

name: 錯(cuò)誤名稱,參數(shù)類型為字符串

message: 錯(cuò)誤信息,參數(shù)類型為字符串

option: 可選對(duì)象,參數(shù)類型為對(duì)象,用于發(fā)送一些額外信息

示例:

fundebug.notify("Test", "Hello, Fundebug!", {
 metaData: {
     company: "云麒",
     location: "廈門"
 }
});

首先在 Fundebug 創(chuàng)建一個(gè)小程序監(jiān)控項(xiàng)目,并按照指示接入插件,然后在app.jsonLaunch函數(shù)下面調(diào)用wx.requestPayment來進(jìn)行測(cè)試。

Fundebug 的微信小程序插件捕獲并上報(bào)了異常:

metaData標(biāo)簽還可以看到我們配置的 metaData,也就是fail回調(diào)函數(shù)的res參數(shù)。

因此,我們可以知道失敗的原因是訂單過期。

另外,如果在二維碼頁面停留時(shí)間過久,也會(huì)觸發(fā)報(bào)錯(cuò):

通過簡(jiǎn)單的加入幾行代碼,就可以將小程序的異常情況了如指掌。而且 Fundebug 的微信小程序插件還可以監(jiān)控線上 JavaScript 執(zhí)行異常、自動(dòng)捕獲wx.request請(qǐng)求錯(cuò)誤、監(jiān)控慢 HTTP 請(qǐng)求,推薦大家接入試用!

關(guān)于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線上應(yīng)用實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計(jì)處理了10億+錯(cuò)誤事件,付費(fèi)客戶有陽光保險(xiǎn)、核桃編程、荔枝FM、掌門1對(duì)1、微脈、青團(tuán)社等眾多品牌企業(yè)。歡迎大家免費(fèi)試用!

版權(quán)聲明

轉(zhuǎn)載時(shí)請(qǐng)注明作者 Fundebug以及本文地址:
https://blog.fundebug.com/2019/07/08/report-http-error-by-fundebug-notify/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105399.html

相關(guān)文章

  • 99%程序沒有考慮網(wǎng)絡(luò)異常

    摘要:本文由云社區(qū)發(fā)表絕大多數(shù)程序只考慮了接口正常工作的場(chǎng)景,而用戶在使用我們的產(chǎn)品時(shí)遇到的各類異常,全都丟在看似的中。在面板,還可以對(duì)請(qǐng)求進(jìn)行暫停延遲等網(wǎng)絡(luò)異常的模擬。小程序?qū)崿F(xiàn)最后,留一道思考題。 本文由云+社區(qū)發(fā)表 絕大多數(shù)程序只考慮了接口正常工作的場(chǎng)景,而用戶在使用我們的產(chǎn)品時(shí)遇到的各類異常,全都丟在看似 ok 的 try catch 中。如果沒有做好異常的兼容和兜底處理,會(huì)極大的影...

    HollisChuang 評(píng)論0 收藏0
  • Sentry異常監(jiān)控方案部署-前端攻略

    摘要:故而,我們需要在項(xiàng)目出現(xiàn)異常時(shí)主動(dòng)對(duì)其進(jìn)行收集上報(bào),分析原因和影響后制定下一步解決方案。所以,我們需要一款成熟的異常監(jiān)控系統(tǒng)來協(xié)助我們。最近在公司項(xiàng)目中部署了,用于項(xiàng)目中異常監(jiān)控,涵蓋了前端后端。 原文首發(fā)于我的個(gè)人博客: https://lonhon.top/ 凡事只要有可能出錯(cuò),那就一定會(huì)出錯(cuò) 對(duì)于任何一個(gè)項(xiàng)目而言,本地測(cè)試肯定做不到100%覆蓋,而且,我們也不能保證用戶能按照我們...

    Lorry_Lu 評(píng)論0 收藏0
  • 美團(tuán)外賣Android Crash治理之路

    摘要:通過團(tuán)隊(duì)的全力全策,美團(tuán)外賣的平均率從千分之三降到了萬分之二,最優(yōu)值萬一左右率統(tǒng)計(jì)方式次數(shù)。美團(tuán)外賣自年創(chuàng)建以來,業(yè)務(wù)就以指數(shù)級(jí)的速度發(fā)展。目前美團(tuán)外賣日完成訂單量已突破萬,成為美團(tuán)點(diǎn)評(píng)最重要的業(yè)務(wù)之一。 面試中常常問到的是Android的性能優(yōu)化以及Crash處理。 今天我們來學(xué)習(xí)一下啊美團(tuán)App的Crash處理。更多參考《Android性能優(yōu)化:手把手帶你全面實(shí)現(xiàn)內(nèi)存優(yōu)化》 原為地...

    elva 評(píng)論0 收藏0
  • JavaScript之錯(cuò)誤異常探討

    摘要:提供一套錯(cuò)誤處理機(jī)制,錯(cuò)誤是干擾程序正常流程的非正常的事故。構(gòu)造函數(shù)是通用錯(cuò)誤類型,除了類型,還有等類型。瀏覽器輸出其他錯(cuò)誤類型構(gòu)造函數(shù)是繼承,實(shí)例是一致的。數(shù)值超出有效范圍數(shù)值超出有效范圍創(chuàng)建一個(gè)實(shí)例,表示錯(cuò)誤的原因無效引用。 同步發(fā)布于 https://github.com/xianshanna... 我的建議是不要隱藏錯(cuò)誤,勇敢地拋出來。沒有人會(huì)因?yàn)榇a出現(xiàn) bug 導(dǎo)致程序崩潰...

    LdhAndroid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<