2017-01-28 7 views
0

優れた角度2 /材料設計のフレームワーク、Teradataの共有結合は、ここに呼び出すREST APIをラップしRESTService抽象クラスを提供します、次のように:キャプチャ例外

export class CustomRESTService extends RESTService<any> { 
    constructor(private _http: Http /* or HttpInterceptorService */) { 
    super(_http, { 
     baseUrl: 'www.api.com', 
     path: '/path/to/endpoint', 
     headers: new Headers(), 
     dynamicHeaders:() => new Headers(), 
     transform: (res: Response): any => res.json(), 
    }); 
    } 
} 

RESTService抽象クラスで "更新" の方法がここに示されています:

public update(id: string | number, obj: T, transform?: IRestTransform): Observable<any> { 
    let requestOptions: RequestOptionsArgs = this.buildRequestOptions(); 
    let request: Observable<Response> = this.http.patch(this.buildUrl(id), obj, requestOptions); 
    return request.map((res: Response) => { 
     if (res.status === 200) { 
     if (transform) { 
      return transform(res); 
     } 
     return this.transform(res); 
     } else { 
     return res; 
     } 
    }).catch((error: Response) => { 
     return new Observable<any>((subscriber: Subscriber<any>) => { 
     try { 
      subscriber.error(this.transform(error)); 
     } catch (err) { 
      subscriber.error(error); 
     } 
     }); 
    }); 
    } 

私の質問は:抽象クラスの更新メソッドが例外をスローする場合、どのようにそれがCustomRESTServiceクラスでキャプチャできますか?つまり、UIでエラーを表示するためにTypescriptコードを使用できますか?

ありがとうございます。

答えて

1

最初のものは何ですか?なぜあなたはアプリケーションのロジックの中ではなく、残りのクライアントの中にそれをキャッチしたいのですか?

あなたは、(あなたがCustomRESTClientクラスで実行している他のインフラストラクチャコードの)いくつかの理由があると仮定して、私は更新関数をオーバーライドしてそこでエラー処理を実装します。

観測せずに、簡単な例:

abstract class Base { 
    update(n:number):number { 
    return n; 
    } 

    test():bool; 
} 

class Child extends Base { 
    update(n:number):number { 
    return super.update(n)*2; 
    } 

    test():bool { 
    return true; 
    } 
} 
関連する問題