Action Delegasyonu İle Hata Yakalama C#

Bir proje yaptığımızda her metod için ayrı try catch blokları yazmak yerine tek bir hata yakalama blogu yazarak daha kolay hale getirebiliriz.

Öncelikle basit bir proje üzerinde klasik bir try catch blogu oluşturalım.

 class Program
    {
        static void Main(string[] args)
        {
           GetValueFromDictionary();
        }

    public static void GetValueFromDictionary()
        {

            try
            {
              Dictionary<string, string> dictionary = new  Dictionary<string, string>();
                dictionary.Add("Table", "Tablo");
                dictionary.Add("Computer", "Bilgisayar");
                dictionary.Add("Article", "Makale");
                //dictionary içinde ekli olmayan bir key değeri verirsek
                Console.WriteLine(dictionary["Rose"]);
            }
            catch(Exception exception)
            {
                Console.WriteLine(exception.Message);
            }
        }

     

Aşağıdaki hatayı alıcaz :

şimdi action delegasyonunu kullanalım.

Ana projemizin içine aşağıdaki methodu eklemeliyiz.

 //parametresiz(void) metodlar için kullanılır.Return göndermez.
        private static void HandleException(Action action)
        {
            try
            {
                //metodu burda çalıştırması için Invoke kullanıyoruz.
                action.Invoke();
            }
            catch(Exception exception)
            {
                Console.WriteLine(exception.Message);
            }
        }

Daha sonra metodumuzu try catch içine almaya gerek kalmayacak.

 public static void GetValueFromDictionary()
        {

              Dictionary<string, string> dictionary = new Dictionary<string, string>();
                dictionary.Add("Table", "Tablo");
                dictionary.Add("Computer", "Bilgisayar");
                dictionary.Add("Article", "Makale");
                //dictionary içinde ekli olmayan bir key için key değeri verirsek
                Console.WriteLine(dictionary["Rose"]);
            
        }

aşağıda verilen şekilde action delegasyo metodu kullanılmalıdır.

static void Main(string[] args)
        {
            
            //GetValueFromDictionary();
            
            HandleException(() =>
            {
                GetValueFromDictionary();

            });
        }

Sonuç olarak :

Tek bir try catch blogu yazarak istediğimiz metodu gönderip hata kontrolü yapabiliriz. 🙂

Yorum bırakın