İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# ArgumentException – Nedenleri ve Kullanımı

C# ArgumentException – Nedenleri ve Kullanımı
+ - 2

Merhabalar, C# ArgumentException – Nedenleri ve Kullanımı dersimde farklı bir konuya değinmek istedim. C# eğitim setimde ayrıntılı bir şekilde anlatmış olduğum Try Catch dersimi tamamlayacak bir ders olarak görebilirsiniz. Sık sık karşılaştığımız diğer Exception’ları da bu şekilde vereceğim.

Exception ‘ın Türkçe Karşılığı İstisna demektir. C#’da hata yakalama için kullandığımız try catch ile birlikte kullanırız. Hata yakalama da bir Exception belirtmek zorunda değiliz ancak verilen farklı exception ‘lar (hatalar) için farklı aksiyonlar almak gerekebilir.  Bu sebeple farklı exception’ları bilmemiz ve kullanmamız gerekir.

Ek olarak bu Exceptionları sadece bir hata çıkması durumuna karşın kullanmayız. Farklı kullanım şekilleri de vardır. Yazdığımız bir metodun işlemleri sırasında istediğimiz bir noktada istediğimiz türden Exception gönderebiliriz. Diğer bir değiş ile Exceptionları bir hata olmadığı halde biz istedik diye gönderilmesini sağlayabiliriz. Örneğin, bir sayının tek mi çift mi olduğunu bulan metodumuzun sayının tek olması durumunda ArgumentException dönmesini sağlayabiliriz.

C# ArgumentException – Nedenleri ve Kullanımı

Devralma :  Object > Exception > SystemException > ArgumentException

Bu yazıda sık sık karşılaştığımız Exception yani hatalardan ve ortaya çıkma sebeplerinden bahsedeceğim.

ArgumentException Nedenleri 

Bir işlem için kullanılmak istenen ve NULL olmayan, bağımsız bir değişkenin, işlemde kullanılması için belirtilen değişen tipine uymaması yani geçersiz olduğu durumlar çıkar.

Örnek: Aşağıda internetten rastgele bulduğum bir kod satırını görmektesiniz. İlk kod satırımızdaki şekilde bir yol üzerinden dosyaya ulaşmaya çalışırsak ArgumentException alırız. Çünkü buradaki UIImageRes adlı metodun istediği şey bir dosya yoludur. Ancak ilk satırda verilen yol C# için doğru değildir. Yani bu geçersiz bir bağımsız değişkendir.

//ArgumentException verir.
private UIImageRes ClickImage = new UIImageRes(@"..\..\Resources\active.png",new Rectangle());

//ArgumentException vermez
private UIImageRes ClickImage = new UIImageRes(@"C:\Desktop\File\Resources\cactive.png",new Rectangle());

ya da

// ArgumentException Verir
cmd.Parameters.AddWithValue("@Country", DropDownListCountry.SelectedItem);

//ArgumentException Vermez
cmd.Parameters.AddWithValue("@Country", DropDownListCountry.SelectedItem.ToString());

bu örnekte de bir şehir bilgisinin listelendiği bir dropdownlist nesnesinden seçilen item’i alınmak isteniyor. Ancak bu gibi nesnelerde item ‘ler bir dizi gibi içerisinde birden fazla veri tutarlar.  Bu sebeple sadece SelectedItem demek geçersiz bir değer olur. Ancak ToString() ile string türüne dönüştürdüğümüzde kayıt sorunsuz gerçekleşir.


ArgumentException Kullanımı

Yukarıda sayının tek mi çift mi olduğunu bulma hakkında bir örnek vermiştim şimdi o örneği kodlayalım.

        #region ArgumentException Çıkarma ve Yakalam Örneği
        private void btn_ArgumentException_Click(object sender, EventArgs e)
        {
            txt_cikti.Text = "";
            int[] sayilar = { 10, 7 };
            foreach (var sayi in sayilar)
            {
                try
                {
                    SayiKontrol(sayi);
                }
                catch (ArgumentException ex)
                {
                    txt_cikti.Text += ex.GetType().Name + ":" + ex.Message;
                }
            }
        }
        static int SayiKontrol(int sayi)
        {
            if ((sayi & 1) == 1)
                throw new ArgumentException(sayi.ToString() + " Sayı çift sayı değil", "sayi");

            return sayi / 2;
        }
        #endregion

Örnekte gördüğünüz gibi

 throw new ArgumentException(sayi.ToString() + " Sayı çift sayı değil", "sayi");

bu satırda throw new diyerek yeni bir exception tanımladık ve hata olarak görünecek açıklamayı kendimiz yazdık.

Bu örnekte görüldüğü gibi  istediğimiz şekilde Exception ‘ları kullanabiliriz. Bunlar sadece Try Catch bloğunda kullanılmak için yapılmamıştır.

Daha fazla bilgiye Microsft.Docs sitesinden ulaşabilirsiniz.

 


C# ArgumentException – Nedenleri ve Kullanımı dersimiz de bu kadardı arkadaşlar.

Tüm Exceptions derslerime bağlantıdan ulaşabilirsiniz.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu dersim Github projemde yerini almıştır. Tüm Exception adı altında eklediğim dersleri Github projeme ekleyeceğim.

Sağlıcakla ve takipte kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (2)

  1. 4 sene önce

    Teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.