Angular 2 Http:为什么不尝试捕获机制?

时间:2017-04-12 22:23:53

标签: angular

我在Angular 2项目中编写了以下代码:

ngOnInit () {
    try {
      this.http.request("http://29.media.tumblr.com/ZabOTt2mpdp8ljaxp88lwdhP_400.jpg").subscribe((res: Response) => {
        console.log(res.url);
        this.urls.push(res.url);
      });
    } catch(e) {
      console.log("Error");
    }
  }

嗯,路径" http://29.media ......"被打破。我希望try块中的代码会产生错误,然后catch块中的代码将被激活。但不是。我得到的是一个错误。你知道为什么吗?

顺便说一下,这里没有Same-Origin-Policy问题。

1 个答案:

答案 0 :(得分:1)

因为它像承诺​​一样异步。在抛出任何异常之前,该函数已经返回。

您可以使用

...subscribe(
  res => {
  },
  err => {
  })