我想将打字稿中生成的异常记录到日志文件(文本文件)中。我想记录信息,如描述,消息,名称,编号,堆栈。我已经编写了Model,API Controller和将数据写入文本文件的逻辑。
但是我想映射在打字稿中进行获取,发布,放置操作后生成的错误响应。 我在接口下面写了
export interface TypeScriptException {
Description: string;
Message: string;
Name: string;
Number: string;
ErrorStack: string;
}
在下面的示例中,在Post之后调用handleError方法时,如何将错误响应中的值分配给TypeScriptException对象?
post(url: string, model: any): Observable<any> {
let body = JSON.stringify(model);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this._http.post(url, body, options)
.map((response: Response) => <any>response.json())
.catch(this.handleError);
}
private handleError(error: Response) {
let typeScriptException: TypeScriptException;
//What to do here
}
答案 0 :(得分:1)
如果出现错误,您将获得类型为 HttpErrorResponse
的实例。您可以从该实例中提取字段,并将其分配给您已定义的typeScriptException
变量。您将不得不利用此实例中提供的详细信息,并相应地在typeScriptException
上设置字段。
HttpErrorResponse
的实例如下所示:
请牢记所有要考虑的字段,可以将其中一些分配给typeScriptException
,具体方法如下:
private handleError(error: HttpErrorResponse) {
let typeScriptException: TypeScriptException;
let { message, name, ok, status, statusText, url } = error;
//What to do here?
typeScriptException = {
Description: `${name} - ${message}`, // OR SOMETHING
Message: message
Name: name,
Number: status, // OR SOMETHING
ErrorStack: statusText // OR SOMETHING
}
}
答案 1 :(得分:0)
在我的情况下,我使用throw方法引发新的错误
import {Observable} from "rxjs"
private handleError(res: HttpErrorResponse) {
Observable.throw(new Error({message:res.message,code:res.status}));
}
或者如果您想获取Response
的所有属性
private handleError(res: HttpErrorResponse) {
Observable.throw(new Error({...res}));
}