如何从 http.request() 正确捕获异常? [英] How to catch exception correctly from http.request()?
本文介绍了如何从 http.request() 正确捕获异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的部分代码:
import {Injectable} from 'angular2/core';从 'angular2/http' 导入 {Http, Headers, Request, Response};从 'rxjs/Observable' 导入 {Observable};导入 'rxjs/add/operator/map';@Injectable()导出类 myClass {构造函数(受保护的 http: Http){}公共我的方法(){让请求 = 新请求({方法:获取",网址:http://my_url"});返回 this.http.request(request).map(res => res.json()).catch(this.handleError);//问题线.//没有这行代码就完美了.}公共句柄错误(错误:响应){控制台错误(错误);return Observable.throw(error.json().error || '服务器错误');}}
myMethod()
在浏览器控制台产生异常:
原始异常:类型错误:this.http.request(...).map(...).catch 不是函数
解决方案
也许您可以尝试将其添加到您的导入中:
import 'rxjs/add/operator/catch';
你也可以这样做:
返回 this.http.request(request).map(res => res.json()).订阅(数据 =>控制台日志(数据),错误 =>控制台日志(错误),() =>控制台日志('耶'));
<小时>
每条评论:
<块引用>例外:类型错误:Observable_1.Observable.throw 不是函数
同样,您可以使用:
import 'rxjs/add/observable/throw';
Part of my code:
import {Injectable} from 'angular2/core';
import {Http, Headers, Request, Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class myClass {
constructor(protected http: Http) {}
public myMethod() {
let request = new Request({
method: "GET",
url: "http://my_url"
});
return this.http.request(request)
.map(res => res.json())
.catch(this.handleError); // Trouble line.
// Without this line code works perfectly.
}
public handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
myMethod()
produces exception in console of browser:
ORIGINAL EXCEPTION: TypeError: this.http.request(...).map(...).catch is not a function
解决方案
Perhaps you can try adding this in your imports:
import 'rxjs/add/operator/catch';
You can also do:
return this.http.request(request)
.map(res => res.json())
.subscribe(
data => console.log(data),
err => console.log(err),
() => console.log('yay')
);
Per comments:
EXCEPTION: TypeError: Observable_1.Observable.throw is not a function
Similarly, for that, you can use:
import 'rxjs/add/observable/throw';
这篇关于如何从 http.request() 正确捕获异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文