Ahmet Çığşar | C# – Exception : not all code paths return a value Hatası ve Çözümü
630
post-template-default,single,single-post,postid-630,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

C# – Exception : not all code paths return a value Hatası ve Çözümü

C# – Exception : not all code paths return a value Hatası ve Çözümü

Exception : not all code paths return a value
C# ile uygulama geliştirmeye başladığım ilk zamanlarda fazlaca aldığım bir istinai durumdur (exception). Uzun süreden sonra bugün tekrar aynı exception görünce bir şeyler yazmak istedim.

Sorunun Genel Sebepleri:

  1. Metodunuz geriye değer gönderecekse return ifadesi yazıp yazmadığınızdan emin olun.
  2. Bir metod yazmışsınızdır ve bu metoda girecek parametreleri tek bir olasılık için ele almışsınızdır. Kısaca metod içerisince farklı durumlarda hataya sebep olacabilecek bir durum vardır fakat siz bu duruma yönelik bir tedbir almamışsınızdır.

Aşağıdaki uydurma örnekte Visual Studio bize “not all code paths return a value” hatasını gönderecektir çünkü sadece durum parametresinin true olduğu duruma göre yapılacak işlem ve geridönüş değeri belirlenmiştir, parametre false olursa ne yapılacağı, geriye hangi değerin döneceği belirtilmemiştir.

public bool SecilmisMi(bool durum)
{
if(durum)
   {
     return 1;
   }
}

Aşağıdaki gibi düzenleme yaptığımızda sorun çözülecektir.

public bool SecilmisMi(bool durum)
{
 if(durum)
   {
     return 1;
   }
 else
   {
     return 0;
   }
}
  1. Birinci maddedeki gibi olabilecek tüm önlemleri almışsınızdır ama tüm durumlar dışında fazladan bir return yani geri dönüş değeri belirlemişsinizdir.  Aşağıdaki kod bloğunda if ve else ile durum kontrol edilmiş fakat sonuç ne olursa olsun üçüncü bir return eklendiği için kontrol mekanizmasının bir anlamı olmayacaktır dolayısıyla hata alacaksınız. Aşağıdaki kod bu duruma örnektir ve hatalıdır.
public bool SecilmisMi(bool durum)
{
 if(durum)
   {
     return true;
   }
 else
   {
     return false;
   }
 return true;
}
  1. Bu durumların benzerlerini while döngüsü kullandığınızda da yaşayabilirsiniz kontrol ediniz.
  2. Geriye metod içerisindeki bir değişkeni göndermesini istiyorsunuz (return degisken) fakat değişkene metod içerisinde değer atanamıyor geriye bir değer göndermiyordur.

Sonuç olarak bu hatanın genel sebebi return ifadesinin fazla, eksik ya da yanlış kullanımıdır.

11 Yorum Var
  • Mustafa KAYALI
    18:19h, 10 Temmuz Cevapla

    Sorunumu çözmeye yaradı. Açıklamaların için teşekkür ederim.

  • Ömer Can IŞIK
    18:26h, 26 Ekim Cevapla

    Allah razı olsun

  • salih akyol
    13:08h, 08 Aralık Cevapla

    teşekkür ediyorum allah razı olsun sorunu çözdüm

  • Ozcan
    14:32h, 24 Aralık Cevapla

    Çok teşekkür ederim. Sorunumu çözdünüz…

  • Mert Alatas
    00:32h, 20 Mart Cevapla

    stackoverflow gibi işe yaradı hocam çok ikrama geçti teşekkürler 🙂

  • M Durucan
    17:18h, 25 Mart Cevapla

    Allah razı olsun hocam sabahtan beridir arıyorum sayfanızı Türkçe kaynak diyerek es geçmiştim çözümüde sizde buldum

  • Ahmet Ünlü
    16:56h, 07 Nisan Cevapla

    Allah razı olsun

  • Mert
    16:58h, 07 Nisan Cevapla

    not all code paths return a value arattığımda stackoverflowdan önde çıkıyorsunuz?? bu arada teşekkürler çok işime yaradı

    • Ahmet Çığşar
      20:37h, 07 Nisan Cevapla

      Google’ın lokasyona göre sonuç çıkarmasından. Türkiye’den Türkçe arama yaptığında yine Türkçe kaynaklara öncelik verecektir anormal bir durum yok 🙂

  • sedat
    03:00h, 27 Mayıs Cevapla

    hocam cok faydalı oldu gercekten ama soyle bır sorum var ben kalıtım alıp metodu tekrar cagırdıgımda bu hatayı aldım ama kalıtım aldıgım sınıfta zaten bır hata yoktu

    • Ahmet Çığşar
      20:48h, 27 Mayıs Cevapla

      Teşekkürler Sedat,

      Kodları görmek lazım tabi malum hastayı görmeden teşhis zor 🙂 Yukarıdaki yazdıklarıma ek olarak. Kalıtım aldığın kod bloklarında for, if, else-if yapılarına ek olarak döngü harici olasılık içeren durumlara tekrar göz gezdirmeli ve dikkat etmelisin.

Yorum Yapın