Merhabalar,
Bu yazımızda sizlere bir yazılı mühendisliği standardı olarak geçen hata yakalama, hata fırlatma nasıl yapılır, nasıl yazılır , nasıl kullanılır bunlardan bahsedeceğim.
Kural dışı durum (exception), programın çalışması durumunda ortaya çıkan hatadır. Bütün modern dillerde olduğu gibi C# ta da kural dışı durumları yakalamak için hata yakalama mekanizması bulunmaktadır. Kural dışı durum yönetimi programımızda bir hata meydana geldiğinde otomatik çalışan kural dışı durum yöneticisi (Exception Handler) adında bir kod bloğu tanımlamamıza imkan tanır. Hataları elle kontrol etmeye gerek yoktur. Program hatalar için C# için standart kural dışı durumlar tanımlanmıştır.
İstisnai Durumlar
Hata sonrasında oluşturulan nesnelere istisnai durum nesneleri denilmektedir. İstisnai durumlar birer sınıf ile temsil edilir, istisnai durum sınıfları object sınıfından türemiştir. Sıkça rastlanılacak ola hatalar SystemException sınıfından türemiş olan ArgumentException, StackOverfFlowException, AritheticException gibi istisnai durum sınıfları ile temsil edilir.
Bahsedilen bütün hazır istisnai durum sınıflarının yanında programcı isterse kendine özel istisnai durum sınıfları da oluşturabilir. Bunu için ApplicationException sınıfı kullanılır.
İstisnai Durum Yakalama
Bu mekanizmayı sağlayan 4 adet anahtar sözcük bulunur. Bunlar bir kod bloğunu temsil eden try,catch,finally ve hatanın fırlatılmasını sağlayan throw’dur.
•try: Kaynak koddaki hataların bulunacağı kod bloklarını temsil eder.
•catch: try bloğundan fırlayan hatayı yakalayarak bunu mantıksal bir şekilde kontrol altına alır.
•finally: try bloğundan çıktıktan sonra kesinlikle yazılması gereken kod bu kısıma yazılır.
•throw: Kural dışı bir durumu elle fırlatmak için kullanılır.
İstinai durum yakalama mekanizmasını inceleyecek olursak:
try { // Hatanın fırlatıldığı bölüm. } catch(kuraldışı_tip x) { // Kural dışı tip için yönetim kısımı. } finally { // Kaynakların temizlenmesi. }
İlk olarak try bloğu işletilir, herhangi bir hata meydana gelmez ise finally bloğu işletilir ve program sonlanır. Eğer try bloğunda bir hata fırlatılırsa catch bloğu devreye girer. Fırlatılan hataya göre farkı birden çok catch blokları da olabilir. Daha sonra finally bloğu işletilir ve program sonlanır.
Exception Sınıfının Önemli Elemanları
•Message: Hatanın özünü tarif ede bir karakter katarı içerir.
•Source: catch bloğunda yakalanan istisnai durum nesnesinin gönderildiği uygulamanın ya da sınıfın adıdır.
•HelpLink: Fırlatılan hata ile ilgili yardım dosyasının yol bilgisini saklar.
•StackTrace: İstisnai durumun hangi metot tarafından üretildiğini belirten bir nesne alır.
•InnerException: Eğer catch bloğu içerisinde bir hata fırlatılırsa catch bloğuna gelinmesini sağlayan istisnai durumun exception nesnesidir.
throw Anahtar Kelimesi
C# tarafından üretilen kural dışı durumlar otomatik yakalandığı gibi throw ifadesi kullanılarak bir kural dışı durumu da elle fırlatmak mümkündür. Örneğin try bloğu içerisinde IndexOutOfRangeException hatasını fırlatmak için;
throw new IndexOutOfRangeException("Dizi Sınırları Aşıldı.");
Yazılır. Burada throw ile beraber new anahtar sözcüğünü kullanmak şart değildir. İstisnai durum nesnesini oluşturup throw ile aşağıdaki gibi de fırlatmak mümkündür.
IndexOutOfRangeExpcetion e = new IndexOutOfRangeException("Dizinin sınırları aşıldı."); throw e;
Anahtar kelimelerimizden ve nasıl kullanıldıklarından bahsettik. Bir sonraki bu konu hakkındaki yazımda kendi exception sınıfımızı oluşturmaktan ve standart istisnai durumlardan bahsedeceğim.
Anlamadığınız veya eksik olduğunu düşündüğünüz kısımları bana yorumlar aracılığı ile bildirebilirsiniz.
Teşekkürler!