Action Delegasyonu ile Profesyonel Hata Yakalama

Herkese Selam ! Yazdığımız kodların hata kontrolü için hepimizin vazgeçilmezi TRY CATCH bloğu tabiki, bunu inkar edemeyiz 🙂 .

Try Catch işleminde yaptığımız ve bazı durumlarda gerçekten hayat kurtaran birçok işlem var. Örneğin ; en basitinden catch bloğuna düşmüş olan hatanın mesajını kendimize mail atmayı sağlayacak bir kod yazarsak; hataya sebep olan durumu da kolayca tespit edebiliriz. Böylece vakitten de kazanmış oluruz. Ancak projenin büyüklüğüne istinaden; yazılan kodun satır sayısı arttığı için; her yazılan metodun hata kontrolü için, tek tek try catch bloğu eklemek, yazdığımızın kodun okunabilirliğini azaltabilir. Peki bu durumdan nasıl kaçınabiliriz ?

Hayat kurtaran Try Catch 🙂

Böyle durumlar için; C#’ın son dönemdeki versiyonlarıyla karşımıza çıkan Action ve Func delegelerinden yararlanabiliriz. Kullanımı gayet basit olan bu işlemle hem fazla kod satırlarından kaçınmış olurken ve hem de kodun okunabilirliği arttırmış oluruz.

O halde nasıl kullanabileceğimiz ile ilgili küçük bir alıştırma yapalım 🙂

Öncelikle ; aşağıdaki gibi RecordNotFoundException adında Exception’dan inherit edilen kendi hata sınıfımızı oluşturuyoruz.

Bu sınıf içerisinde bir Constructor oluşturularak, hata mesajının gönderilebilmesinin parametrik olarak handle edilmesi sağlanmıştır.

RecordNotFoundException Sınıfı

Action Delegasyonunu kullanmadan önce FindException adında bir metotumuz vardı. Ve bu metodu try catch bloğunda çağırarak işlem yapıyorduk. FindExcept metotunda yapılan işlem , öğrencilerden oluşan listemiz mevcut ve bu liste içerisinde “Orhan” adında bir öğrenci yok ise Exception fırlatıyoruz.

Ve bu yaptığımız fonksiyonu aşağıdaki gibi try catch bloğunda çalıştırıyoruz. Bu kullanımda da herhangi bir yanlışlık yok ancak yazdığımız projenin büyük bir proje olduğunu düşünecek olursak, her metotta bu şekilde try catch yazdığımız takdirde kodun okunabilirliği azalacaktır.

HandleException adında bir metot oluşturalım. Metotlara parametre olarak string,integer ,nesne gibi değerler gönderilebilir. Ancak bu işlemde metota parametre olarak metot göndereceğiz 🙂 . Parametrenin türünün metot yani kod bloğu olmasını sağlayacağız. Parametre olarak göndereceğimiz metot ise tahmin ettiğinize üzere, yukarıda oluşturduğumuz FindExcept() metotudur.

Birçok dilde bu kullanım bulunmamaktadır. Bu yapı delegeler yardımı ile oluşturulmaktadır.

HandleException Metotu

Action parametresiz metot bloğu anlamına gelmektedir. Ve void operasyonlar için kullanılır. Herhangi bir return ifadesi göndermez. Action aslında aşağıda gösterildiği üzere, metotun içerisinde göndermiş olduğumuz metotu teşkil eder.

Action’a invoke etmek demek; parametre olarak gönderdiğim işlemi çalıştır demektir. Bu sayede metot; merkezi bir try catch içerisine göndermiş olunur. Çalıştırılmak istendiğinde konsola hata mesajının yazdırıldığını göreceksiniz.

Genellikle bu işlem merkezi bir class içerisinde tanımlanarak , bu class üzerinden çalıştırılması ve her yerde kullanılması sağlanabilir.

Kaynakça

C# Kursu A’dan Z’ye Profesyonel Programcılık (Udemy) — Engin Demiroğ

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir