99%のプログラムが考慮していないネットワーク異常?Fundebugを使用します.notify()自発的に報告する


最近、99%のプログラムが考慮されていないネットワーク異常を見て、冒頭で述べた.
ほとんどのプログラムはインタフェースが正常に動作するシーンだけを考慮していますが、ユーザーが私たちの製品を使用するときに遭遇した様々な異常は、okのように見えるtry catchに捨てられています.異常な互換性と底辺処理が行われていないと、ユーザー体験に大きな影響を与え、安全と資本損失のリスクを深刻にもたらす.
そこで,GitHub上のいくつかのオープンソース微信ウィジェットを解析したところ,多くのコード異常処理は確かに不十分であることが分かった.
  • ログインインタフェースは成功した場合のみを考慮し、失敗した場合は
  • を考慮しない.
    //      
    wx.login({
        success: function() {
            wx.getUserInfo({
                success: function(res) {
                    that.globalData.userInfo = res.userInfo;
                    typeof cb == "function" && cb(that.globalData.userInfo);
                }
            });
        }
    });
  • ネットワーク要求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%の場合にのみ失敗する可能性があります.深刻なことではないように見えますが、ユーザーのレベルを考えると、このことはそんなに簡単ではありません.100万人のユーザーがいると仮定すると、1万人のユーザーが異常に遭遇し、ユーザーの使用頻度が高い場合、影響は1万人のユーザーだけではない.そして、今の製品はすべて体験が至上で、もしこのような問題に出会ったら、ユーザーはあなたを捨てて、取引先を失ったのは収入を失ったのと同じです.
    インタフェースの異常をどのように適切に処理するかは厳粛なことであり,重視されるべきである.

    要求異常を適切に処理する


    では、どうすればいいのでしょうか.まず、微信オープンインタフェースのパラメータにfail(「インタフェース呼び出しに失敗したコールバック関数」)とPromiseのcatchの部分があるなど、要求異常の処理コードを定義する.次に,異常がもたらす可能性のある結果に基づいて,関数で対応する処理を行う.後続の操作に失敗したり、インタフェースにフィードバックがない場合は、failコールバックで正しく処理する必要があります.もしあなたが本当に問題が起こり得ないと思ったら、少なくとも異常報告書を書いてください.たとえ間違いがあったとしても、具体的な状況は知っている.
    次の図は、インタフェース呼び出しに失敗したコールバック関数(fail)を含む微信支払インタフェースのパラメータリストです.
    また、公式にも例が示されています.
    wx.requestPayment({
        timeStamp: "",
        nonceStr: "",
        package: "",
        signType: "MD5",
        paySign: "",
        success(res) {},
        fail(res) {}
    });

    コールバック関数failで例外をレポート


    ウィジェットの稼働状況を完全に把握するため、異常を報告します.Fundebugの微信ウィジェットプラグインは、異常を自動的にキャプチャできるほか、APIインタフェースを介して異常を自発的に報告することもサポートされています.
    公式文書によると、
    fundebugを使用します.notify()は、Fundebugにカスタムエラーメッセージを送信できます.
    name:エラー名、パラメータタイプ文字列
    Message:エラー情報、パラメータタイプが文字列
    option:オプションオブジェクト、パラメータタイプオブジェクト、追加情報の送信に使用
    例:
    fundebug.notify("Test", "Hello, Fundebug!", {
     metaData: {
         company: "  ",
         location: "  "
     }
    });

    まずFundebugでウィジェット監視項目を作成し、指示に従ってプラグインにアクセスし、app.jsonLaunch関数の下でwx.requestPaymentを呼び出してテストを行います.
    FundebugのWeChatウィジェットプラグインは、例外をキャプチャして報告します.metaDataラベルには、我々が構成したmetaData、すなわちfailコールバック関数のresパラメータも表示されます.
    そのため、失敗の原因は注文の期限切れであることがわかります.
    また、QRコードページに時間がかかりすぎると、エラーメッセージもトリガーされます.
    数行のコードを簡単に加えることで、ウィジェットの異常を手のひらで知ることができます.また、Fundebugの微信ウィジェットプラグインは、オンラインJavaScriptの実行異常を監視したり、wx.requestの要求エラーを自動的にキャプチャしたり、遅いHTTP要求を監視したりすることができます.

    Fundebugについて


    FundebugはJavaScript、微信小プログラム、微信小ゲーム、支付宝小プログラム、React Native、Nodeに専念している.jsとJavaのオンライン上でリアルタイムBUGモニタリングを適用します.2016年に双十一が正式にオンラインになってから、Fundebugは累計10億+エラー事件を処理し、有料のお客様はサンシャイン保険、クルミプログラミング、ライチFM、掌門1対1、微脈、青団社など多くのブランド企業があります.無料試用を歓迎します!

    著作権声明


    転載時に著者Fundebugと本文の住所を明記してください.https://blog.fundebug.com/2019/07/08/report-http-error-by-fundebug-notify/