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?