2016-02-20 55 views
8

Mam api, który zwraca błędy 400 lub 404, jeśli nie powiodło się.catch api 404 odpowiedź z Angular2 http

Po uruchomieniu metody http.get nie przechwytuje ona błędu subskrypcji i generuje błąd.

Http.get(`api/path/here`).map(res => res.json()).subscribe(
      data => console.log(data), 
      error => console.log(error) 
     ); 

Po to błąd pojawia się

enter image description here

+0

catch spojrzeć w zakładce '' code' Siecią dla stanu i na karcie podglądu informacji o błędzie –

+0

@PardeepJain kod statusu 400, który whats api zwraca, jeśli obiekt użytkownika nie zostanie znaleziony. – Basit

Odpowiedz

6
.subscribe(res=>{ 
    this.data=res; 
    console.log('bye'); 
}, 
(err)=>console.log(err), 
()=>console.log("Done") 
); 

Wypróbuj ten sposób.

11

Można również użyć operatora

http.get(`api/path/here`) 
    .map(res => res.json()) 
    .catch(
     err => { 
      // handle errors 
     }) 
    .subscribe(
     data => console.log(data) 
    ); 
+1

Czy "catch" ma jakąkolwiek przewagę nad wykorzystaniem metody "onError" na samym operatorze subskrybowania? Jeśli po prostu włączam implementację metody "onError", czy jest szansa, że ​​mogę mieć nieprzechwycone wyjątki prawdopodobnie spowodowane przez mojego operatora "map"? Dzięki! – slashp