Custom Exception

istisnai durumları ele almak anlamına gelir.Geliştirdiğimiz uygulamalarda geliştirici(developer)kaynaklı logic(mantıksal),beklenmedik ve kullanıcı bazlı hataları handle(ele almak) etmemiz gerekmektedir bu senaryolardan hangisi olursa olsun bunları try-catch blokları ile ele alıyoruz ve ikinci silahımız break pointtir.

Custom bir exception sınıfı olusturmak istediğimizde bu sınıf muhakkak "ApplicationExceptin.cs"sınıfından kalıtım almalıdır.

public class HasNumber:ApplicationException //artık HasNumber.cs sınıfımız c# da hiyerarşik yani gömülü olarak bulunan ApplicationException.cs

//sınıfından sahip olduğu tüm özellik ve yetenekleri kazanmıştır.

HasNumber.cs

public class HasNumber:ApplicationException 
    {
        public string Text { get; set; }
        public HasNumber(string param)
        {
            Text = param;//dışarıdan gelen param ı text e attık
            GetException();
        
           
        }
        public override string Message { get { return "Metin içerisinde sayısal değer yer almaz:"; } }
        
    public void GetException() 
        {
            //bir dosya veya veritabanına alınan hatalar ile ilgili bildirimleri bu method aracılığı ile yazdırabilirsiniz.Biz
            //database ile connection kurmayı bilmediğimiz için text dosyasına yazdıracağız.Burada dosyadan okuma yazma işlemlerinin yanı
            //sıra StringBuilder yapısınıda öğreneceğiz.(stringbuilder a ayrı şekilde bakacağım)

            string folderUrl1 = Application.StartupPath + "\\memos.txt"; //burada projenın bulundugu dizin altında "memos.txt" dosyasını yaratmak için Application.cs sınıfın StartupPath özelliğini kullandık
            //bu kod bizim için ilgili .txt uzantılı dosyayı bir kez yaratacak ve hata alındıkça üzerine yazılacak unutmayın 1 kez yaratacak.
            DateTime exceptionTime = DateTime.Now;
            string message = this.Message;
            string text = this.Text;

            StreamWriter streamWriter = new StreamWriter(folderUrl1, true ,Encoding.UTF8);
            //yazma işlemini tam olarak burası yapacak
            //Lakin "StreamWriter" sadece StringBuilder nesnesi üzerinden değer kabul ettiği için ve bizim yukarıda hazırladığımız değişkenleri
            //(exceptionTime,message,text) bir araya getirecek tek bir string hata mesajı olarak yazdıracagız.Bu bir araya getirme 
            //işlemi için Strng Format çeşitlerindende yararlanabilirdik lakin daha sonradan StringWriter kabul ettiği StringBuilder 
            //yapısına dönüştürmek zorunda kalacaktır hem bu sıkı tının yanında hemde StringBuilder ın String Format tan daha performanslı olduğunu
            //biliyoruz.            

            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append(text);
            stringBuilder.Append("|");
            stringBuilder.Append(message);
            stringBuilder.Append("|");
            stringBuilder.Append(exceptionTime);
            stringBuilder.Append("|");
            streamWriter.WriteLine(stringBuilder.ToString());
            streamWriter.Close();

        }
    }
}
     

Form1;

Last updated

Was this helpful?