Angular Global Error Handler (Hata yönetimi) nasıl yapılır?

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.

Mehmet Sert

HTML, CSS, Javascript ve Angular konularında tecrübe edinmiş ve Bursa'da Frontend Developer olarak bir firmada görev almaktayım. Yeni teknolojilere meraklıyım, öğrendiklerimi uygulayarak ve anlatarak pekiştirmeyi seviyorum....

"Angular Global Error Handler (Hata yönetimi) nasıl yapılır?" için hiç yorum yapılmadı.

Henüz yorum yapılmamış.

Yorum yap * E-posta adresiniz yayınlanmayacak.