22 Kasım 2015 Pazar

C# Exception - Not all code paths return a value Hatası

C# Exception - Not all code paths return a value Hatası

Özellikle yazılıma ilk başladığımız zamanlarda bolca karşımıza çıkan " Not all code path return a value " hatasının nedeni ve çözümlerini inceleyelim.

Hatanın 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;
}
}

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.

Yani dostlar : Tek Çare return ! :D


Hiç yorum yok:

Yorum Gönder

Not: Yalnızca bu blogun üyesi yorum gönderebilir.