2017-05-22 12 views
0

私のアプリケーションを強制終了する例外が発生しているので、catch()/ consumeすることはできません。私はこれにはとても新しいので、おそらくcatchで何か問題が起きていますか?rxjs Observable.catch()が動作しない

private callConfigService(): Observable<Map<string,string>> { 

    try { 
     let confObs = this.contentService.fetchContentUsingGET(id, store, locale, null, false) 
      .catch((res) => { 
       console.log('Retrieving config FAILED! ', res); // not hit 
       return Observable.from([new Map<string,string>()]); 
      } 
     ).subscribe(
      (res) => { console.log('fetchContentUsingGET : ', res); }, // not worried about success scenario 
      (err) => { console.log('error response: ', err); } // not hit 
     ); 
    } catch (exception) { 
     console.log('???', exception); // not hit 
    } finally { 
     console.log('?????'); // hit 
    } 
    return Observable.of(new Map<string,string>()); // not hit 
} 

残念ながらfetchConfigUsingGETコールは、ライブラリからあるので、私は内部だかわからないんだけど。しかし私は電話しなくても404例外が発生するので、熱い観測可能なように見えるsubscribe()

catch()が完全にスキップされた理由は何ですか?

Uncaught * e {_body: "{"status":404,"error":"StatusCodeError","data":"404 - undefined"}", status: 404, ok: false, statusText: "Not Found", headers: t…}   bundle.umd.js:5 
+1

実際に* 'confObs'をどこでも使用していますか?あなたが見ているエラーメッセージは何ですか? – jonrsharpe

+0

いいえ、私は全くそれを使用しない、上記の宣言はそれです。これはすべてフレームワークの一部であり、スタンドアロンの例を得るのは難しいですが、エラーは次のようなものです: 'EXCEPTION:ステータス付きレスポンス404 URL for URL: ' – user2759883

+1

' 'catch''は、例外がスローされたときに呼び出されます。あなたが言ったように、 '' fetchConfigUsingGET''の動作が4xx httpステータスコードの例外をスローするhttp get呼び出しと同じであるかどうかを知ることはできません。 '' confObs''を購読して、あなたが得るものを見てください。 – Matt

答えて

0

試してみましたか?サブスクライブ演算子にOnErrorハンドラを追加します。

let confObs = this.contentService.fetchContentUsingGET(id, store, locale, null, false) 
        .catch((res) => { 
         console.log('Retrieving config FAILED! ', res); 
         return Observable.from([new Map<string,string>()]); 
        }) 
        .subscribe(
         (res) => { console.log('fetchContentUsingGET : ', res);}, 
         (err) => { console.log('fetchContentUsingGET.Error : ', err);}, 
        () => { //on completed } 
       ); 
+0

よろしくお願いします。私は残念ながら助けにはならなかったが、これをローカルに追加してしまった。上記のコードを更新します。 – user2759883

+0

その場合、ハンドラを必要とせずにfetchContentUsingGETで例外が発生するはずです。あなたは図書館をチェックしなければなりません。 – wannadream

+0

'fetchContentUsingGET()'が例外をスローした場合、私の 'catch()'はそれをキャッチできませんでしたか? (申し訳ありません、新しいrxjs ...) – user2759883

関連する問題