2017-06-22 15 views
0

最新のAngularバージョンで書かれたテーマのコードで作業していて、ウェブを検索していて、ほとんどの開発者がsubscriptionエラーを処理していないことがわかりました。角度 - Observableのサブスクリプションでエラーを処理するタイミング

私の質問はです。Observableサブスクリプションのエラーをいつ処理する必要がありますか?エラー処理なし

this.myService.observable$.subscribe(
     (data) => { 
      // do stuff with data 
     } 
    ); 

エラー処理付き:

this.myService.observable$.subscribe(
     (data) => { 
      // do stuff with data 
     }, 
     err => { 
      // do stuff with error 
     } 
    ); 

私は主に

を処理するためではない問題ではありません最初のバージョンを見つけることが...サブスクリプションのエラー?

これは、コードが不安定で、テスト可能で、失敗する傾向にありませんか?

+0

エラー時のいくつかのアクションは、エラーCbを設定することをお勧めします。 –

+0

@YordanNikolovはい、私は私の観察可能な部分に、あるいは少なくともそれらのほとんどの部分にCbを設定しました。しかし、私の質問はグッドプラクティスに関するものであり、敬意を表している開発者が「フォローしない」ように見える理由です。多分私はまだ分かっていない別の扱いがあります。たぶん、Observable delcarationで直接処理されているかもしれません(例えば、Httpリクエストのように) – SrAxi

+0

私には、すべてのエラーを処理して、ユーザに通知し、それらのエラーをバックエンドに送信して追跡することが常に良い方法です。もう一つのベストプラクティスは、IIFではなく別の関数ハンドラ(function statment)を持つことです。 –

答えて

1

なぜ

例..重要click Me

エラー処理が今エラー処理が観測に必要なのはなぜ見てみましょうです:あなたは、エラーを処理するためにしてやりたい場合は

this.service.send(this.shareData).subscribe(() => { 

     // Here you are sure that the send has shared the data sucessFully 

    }, (error) => { 

     /* Now If you want to handle errors Like Front End Errors and Log this 
     In your backEnd DB So solve it and fix it */ 

     /* Example below check error type is It from frontEnd and log error through Api */ 

     if(error.type !== 'API') { 
     this.logService.log({ 
      Level: 2, 
      Message: 'Failed to setFromDB', 
     }); 
     } 
    }); 
+0

私は理解しています。なぜ私たちはエラーを処理する必要があるのか​​知っていますが、なぜそう多くのdevsがObservableサブスクリプションのエラーを処理しないのかよく分かりません。ユーザーと直接対話するサブスクリプションにのみ関連していますか? – SrAxi

+0

あなたが「角型チーム」または「角を使う開発者」を意味するのは – mayur

+0

コミュニティ開発者としましょう。私が目を覚ましたすべての例とテーマは、サブスクリプションのエラー処理*(80%)*に欠けています。これには理由があるはずです。 – SrAxi

1

エラーを処理して、ユーザーにフィードバックを与えたり、デフォルトの動作にフォールバックすることをお勧めします。

たとえば、RESTサービスに接続しようとしたときに通信が発生した場合、接続の問題やキャッシュされたデータのロードをユーザに知らせることができます。

または、RESTサービスがエラーを返す場合。例えば、あなたのアプリケーションは予約アプリケーションであり、ユーザーは注文をしていますが、注文を送信すると、在庫がなくなります。 RESTサービスの戻り値とエラーは、ユーザーに表示される項目がなくなったことを示します。

角度スタイルガイドのさらに

例えばヘッダー、HTTPメソッド、キャッシング、エラー処理として、データ管理の詳細、およびロジックを再試行し、構成要素および他のデータコンシューマとは無関係です。

これは、サービスから意味のあるメッセージを返す必要があることを意味します。

+0

これは単なる配慮ですか?同様に、「この理由のためにこれが壊れた」*ことをユーザーに通知するためだけです*。私はこれがなぜ私を納得させないのか分かりません。つまり、アクションの結果をユーザーに常に伝えるべきですが、コード内のエラーを処理するのは変です。 – SrAxi

+0

エラーは結果です! – JEY

+0

私はこのエラーがObservable構造で処理されると考えているので、コードは賢明です。エラーはそこで処理されます。次に、サブスクリプションでは、最終ユーザーにフィードバックを伝えるだけです。 – SrAxi

関連する問題