私のAngular 2アプリでは、Observableを返すhttp.get
メソッドを持つサービスがあります。もし、しかしhttp.getの.catch()がHTTP 500エラーコードをキャッチしない
campaign.component.ts
this.campaignService.getCampaign(paramId)
.subscribe(
obj => {
// do something
},
() => {
// handle error here
}
});
:そうのような、私はその後、私のコンポーネントでそれを呼び出す
campaign.service.ts
public getCampaign(campaignId: string): Observable<Campaign> {
return this.http.get(this.campaignsUrl + '/' + campaignId, options)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || body || {};
}
private handleError(error: Response | any) {
// In a real world app, we might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
、 http.get
呼び出しはHTTP 500を返します。私は.catch(...)
セクションをm yサービスクラス。コンソールは、キャッチされない例外を出力します。
GET http://localhost:9001/api/v1/campaigns/4175edc4 500 (Internal Server Error)
EXCEPTION: Response with status: 500 Internal Server Error for URL: http://localhost:9001/api/v1/campaigns/4175edc4
Uncaught Response {_body: "{"message":"invalid input syntax for uuid: \"4175edc4\""}", status: 500, ok: false, statusText: "Internal Server Error", headers: Headers…}
私はここで間違っていますか?
デバッグモードでは、どちらのモードが選択されていますか。 'this.extractData'または' this.handleError'またはそれらのどれもありませんか?問題のこれらの2つの方法も提供できますか? – ulubeyn
@ulubeyn、デバッグ中に、何もヒットしません。 2つの方法についての詳細も追加しました。 – FilmiHero
エラーのコンソール出力は何ですか?あなたが200を返すと、これは機能しますか? – ulubeyn