摘要:而且官方也給出了示例在回調(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.js的onLaunch函數(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)于FundebugFundebug專注于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
摘要:本文由云社區(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ì)極大的影...
摘要:故而,我們需要在項(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%覆蓋,而且,我們也不能保證用戶能按照我們...
摘要:通過團(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)化》 原為地...
摘要:提供一套錯(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)致程序崩潰...
閱讀 920·2021-11-22 13:54
閱讀 2848·2021-09-28 09:36
閱讀 2986·2019-08-30 15:55
閱讀 1956·2019-08-30 15:44
閱讀 549·2019-08-29 12:31
閱讀 2566·2019-08-28 18:18
閱讀 1204·2019-08-26 13:58
閱讀 1389·2019-08-26 13:44