Angular uygulamanızda her servis isteğinde hata yakalayıp işlemler yaptırıp her seferinde bununla uğraşmaktan bıkmış olabilirsiniz. Angular'da ErrorHandler sınıfını kullanarak çok basit bir şekilde global hata yönetimi yapabilirsiniz ve her istekte aynı işleri yaptırmaktan kurtulursunuz.


Hiç uzatmadan nasıl kullanacağımıza bakalım;

İlk olarak bir class oluşturuyoruz src/app içerisinde oluşturabiliriz;


global-error-handler.ts;

import {ErrorHandler, Injectable} from '@angular/core';

@Injectable()
export class GlobalErrorHandler implements ErrorHandler {

  constructor() {}
  
  handleError(error: any) {
    console.error('Hata oluştu');
    console.log(error.url);
    console.log(error.status);
    console.log(error.name);
    console.log(error.message);
  }

}


handleError methodu içerisinde istediğiniz işlemleri yapabilirsiniz.

Örneğin constructor içinde Router'ı çağırıp bir hata oluştuğunda istediğiniz bir sayfaya yönlendirebilirsiniz veya sweetAlert gibi bir eklenti kullanarak hataları daha güzel bir şekilde kullanıcıya gösterebilirsiniz.


Şimdi bu class'ı oluşturmamız hataların artık buradan yönetiliyor olması anlamına gelmiyor. Bu class'ı app.module providers içerisinde tanımlamamız gerekiyor.


app.module.ts;

import {ErrorHandler} from '@angular/core';
import {GlobalErrorHandler} from './global-error-handler';

providers: [
  {
    provide: ErrorHandler,
    useClass: GlobalErrorHandler
  }
]


Bu kadar. Bu tanımlamadan sonra artık hatalar oluşturduğumuz class içerisinde yaptırdığımız işlemlerden geçecek. Bundan sonra servisteki bir methodu çağırırken

this.servisAdi.methodAdi()
  .subscribe((res: any) => {
    console.log(res);
  }, (err: any) => {
    console.log(err);
  });

yerine;

this.servisAdi.methodAdi()
  .subscribe((res: any) => {
    console.log(res);
  });

yazmamız yeterlidir.


Umarım faydalı olur.