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:
- Metodunuz geriye değer gönderecekse return ifadesi yazıp yazmadığınızdan emin olun.
- 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; } }
- 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; }
- Bu durumların benzerlerini while döngüsü kullandığınızda da yaşayabilirsiniz kontrol ediniz.
- 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.