如何捕获 angular 2 中的错误?

How to catch errors in angular 2?

我有一个如下所示的服务器调用

成功案例,

状态---200

{error_code: 0, status: "success", results: [,…], message: "Album successfully found."}

在失败的情况下, 状态---401

 Login credentials are incorrect.

我正在处理代码,

 this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(response => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        }) 
  }

但这是一个错误(401-状态)。所以它不会进入其他 case.Can 任何人建议帮助处理或捕获这个 error.thanks。

订阅有错误回调:

 this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(
        (response) => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        },
        (error)=>{
            console.log(error);
        }
     ) 
  }

文档中的示例:https://angular.io/docs/ts/latest/guide/server-communication.html#!#the-herolistcomponent-class

Subscribe方法有3个参数,第一个在收到成功响应时调用,第二个在收到错误响应时调用,第三个在完成时调用。你应该试试这个;

this.http.post(yourParameters).subscribe(response => {
     console.log('success');
}, error => {
     console.log('fail')
});

我也推荐你看看angular tutorial and Rxjs Subscribe

您也可以使用 .catch

this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(response => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        }).catch((err)=>{console.log(err)});