如何从 http.request() 正确捕获异常? [英] How to catch exception correctly from http.request()?

查看:54
本文介绍了如何从 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆