title: Catch 401 Exception in Angular2
body: <p>When i try to connect to an unauthorized URL i get in Chrome:</p>
  
  <pre><code>zone.js:1274 POST http://localhost:8080/rest/v1/runs 401 (Unauthorized)
  core.umd.js:3462 EXCEPTION: Response with status: 401 Unauthorized for URL: http://localhost:8080/rest/v1/runs
  </code></pre>
  
  <p>The code of my Home Component is:</p>
  
  <pre><code>import {Component, OnInit} from '@angular/core';
  import {Run} from "../_models/run";
  import {Http, Response} from "@angular/http";
  import {RunService} from "../_services/run.service";
  import {Observable} from "rxjs";
  
  @Component({
      moduleId: module.id,
      templateUrl: 'home.component.html'
  })
  
  export class HomeComponent implements OnInit{
      url: "http://localhost:8080/rest/v1/runs"
      username: string;
      runs: Run[];
  
      constructor(private http: Http, private runService: RunService) {
  
      }
  
      ngOnInit(): void {
          this.username = JSON.parse(localStorage.getItem("currentUser")).username;
          this.runService.getRuns()
              .subscribe(runs =&gt; {
                  this.runs = runs;
              });
      }
  }
  </code></pre>
  
  <p>And this component uses this service:</p>
  
  <pre><code>import { Injectable } from '@angular/core';
  import {Http, Headers, Response, RequestOptions, URLSearchParams} from '@angular/http';
  import { Observable } from 'rxjs';
  import 'rxjs/add/operator/map'
  import {AuthenticationService} from "./authentication.service";
  import {Run} from "../_models/run";
  
  @Injectable()
  export class RunService {
      url = "http://localhost:8080/rest/v1/runs";
      private token: string;
  
      constructor(private http: Http, private authenticationService: AuthenticationService) {
  
      }
  
      getRuns(): Observable&lt;Run[]&gt; {
          return this.http.post(this.url, JSON.stringify({ token: this.authenticationService.token }))
              .map((response: Response) =&gt; {
                  console.log(response.status);
                  if (response.status == 401) {
                      console.log("NOT AUTHORIZED");
                  }
  
                  let runs = response.json();
                  console.log(runs);
                  return runs;
              });
      }
  }
  </code></pre>
  
  <p>What is the correct way to catch this 401 Exception and where should i do this?
  In the component or in the service? The final goal is to redirect to the Login page if any 401 response happens.</p>