.Net Uygulamalarında Kod İncelemesi (Code-Review)- Gün:2

Kurumumuz bünyesinde geliştirdiğimiz uygulamalardaki tecrübelerimiz ve ilgili uygulamalar üzerindeki best practise örneklerinin derlendiği .Net uygulamalarında kod incelemeleri yazı serimize devam ediyoruz.

İstisna Yönetimi

.Net çatı yapısının kendine özgü istisnai durum tanımlamaları vardır. Örn:ArgumentException, ArgumentNullException, InvalidOperationException gibi
Uygulamalarımızda genelde bu ana istisna tanımlamalarını kullanmayı tercih ediyoruz.

Özelleştirilmiş İstisna Yapılarını kullanma

Eğer kendi istnisna yapınızı oluşturacaksanız; bu yapılarınızın detayını açık açık belirtmenizi tavsiye ediyoruz.

Throw ile Throw Ex Farkı

İstisna yönetimlerinde sıklıkla kullandığımız yapılardır. İstisna yakalandığı zaman (catch bloğu içerisinde) caller’a bir bilgilendirme göndermemiz gerekir. Stack Trace yapısı içerisinde bu hiyerarşiyi rahatlıkla izleyebiliriz.


 static void Main(string[] args)
        {
            try
            {
                MyExceptionTest myEx = new MyExceptionTest();
                myEx.CallFaultyMethod();
            }

            catch(Exception ex)
            {
                Console.WriteLine("-- Uygulama Stack Trace Bilgi ---");
                Console.WriteLine(ex.StackTrace.ToString());
                Console.WriteLine("--Hata Alınan Method ----");
                Console.WriteLine(ex.TargetSite.ToString());
            }  
        }
    }

    class MyExceptionTest
    {
        public string CallFaultyMethod()
        {
           try
            {
                FaultyMethod();
                return "FaultyMethod Çağrıldı";
            }

            catch(Exception ex)
            {

                throw;

            }

        }

        public void FaultyMethod()
        {

            throw new ArgumentException();

        }

Yukarıda throw yapısında kod örneği bulunmaktadır. Uygulamayı çalıştırdığımızda alınan stack trace çıktısı aşağıdadır.

trace1

 static void Main(string[] args)
        {
            try
            {
                MyExceptionTest myEx = new MyExceptionTest();
                myEx.CallFaultyMethod();
            }

            catch(Exception ex)
            {
                Console.WriteLine("-- Uygulama Stack Trace Bilgi ---");
                Console.WriteLine(ex.StackTrace.ToString());
                Console.WriteLine("--Hata Alınan Method ----");
                Console.WriteLine(ex.TargetSite.ToString());
            }  
        }
    }

    class MyExceptionTest
    {
        public string CallFaultyMethod()
        {
           try
            {
                FaultyMethod();
                return "FaultyMethod Çağrıldı";
            }

            catch(Exception ex)
            {

                throw ex;

            }

        }

        public void FaultyMethod()
        {

            throw new ArgumentException();

        }


Ekran çıktısı :

trace1

Yukarıdaki throw ex örneğinde stack trace resetlenmiştir. Stack trace yapısının daha detaylı , orjinal halini görmek ve caller tarafa daha sağlıklı
bilgi vermek için throw yapısı kullanılmasını tavsiye ediyoruz.

Yeni yazmızda görüşmek üzere..

trace1

October 26, 2020 tarihinde oluşturuldu.