Exception Sınıfından Korkmayın

Photo by Nong Vang on Unsplash

Exception Oluşturma Senaryoları

1 —Exception Tipini Değiştirmek

Split adında bir metot yazdığımızı düşünelim. Bu metoda ödenecek toplam tutarı ve ödeme işlemine katılacak kişilerin listesini parametre olarak gönderdiğimizi varsayalım. Metodumuzun sonuç olarak da bir kişinin ödemesi gereken tutarı döndüğünü hayal edelim. Ödeme işlemine katılacak kimse olmazsa C# dilinde yürütülen bölme işlemi DivideByZeroException tipinden bir exception oluşturmaktadır. Bu durumda exception tipini değiştirerek hem kendi açıklamamızı yazabilir hem de duruma daha uygun bir hata tipini seçebiliriz. Örnek senaryomuzda hatanın sebebi sayının sıfıra bölünememesi olsa da durumu metota verilen parametrenin geçerli yapıda olmadığı yönünde bir exception tipi ile daha iyi temsil edebiliriz.

2 — Sürecin Devam Edememesi

Bir masa üstü programı olarak hesap makinası yazdığımızı düşünelim. Toplama işlemi butonuna basıldığı zaman TextBox içerisinde yer alan değerleri toplayarak sonuç döndüğümüzü varsayalım. Aldığımız değerlerin sayı olmaması halinde işleme devam edebilme olanağımız yoktur. İşleme devam edemeyeceğimiz bu gibi durumlarda exception oluşturup süreci sonlandırabiliriz.

3 — Beklenmedik Durumlar

Bazı durumlardaysa aldığımız parametre uygun format ve değer aralığında olsa dahi işlemi yürütemeyebiliriz. Bu gibi istisnai durumlar da bizim exception oluşturduğumuz senaryolardan biri olacaktır.

Exception Oluşturmak veya Operasyon Sonucu Dönmek

Exception oluşturmak veya hata kodu içeren işlem sonuçları dönmek birbiri yerine kullanabileceğimiz iki senaryodur. Bu iki senaryonun da bazı dezavantajları vardır. Yazının bu kısmında bu dezavantajlara değineceğiz.

Operasyon Sonucu Dönmenin Dezavantajları

1 — Kod uzunluğu

Exception Oluşturmanın Dezavantajları

1 — Performans Düşüşü

  • Var olan bir şehir ile işlem yatığımız zaman (CityId = 1) exception kullanan servis yapımız çok ufak bir farkla daha performanslı çalışmaktadır. Bunun sebebi daha az kontrol bloğu ile uğraşıyor olmasıdır.
  • Var olmayan bir şehir ile işlem yaptığımız zaman (CityId = 0) exception objesini oluşturmanın maliyeti sebebiyle işlemimizin sonuçlanması çok daha fazla zaman almaktadır.

--

--

var software = ConvertFrom(caffeine)

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adem Catamak

Adem Catamak

var software = ConvertFrom(caffeine)