J'ai rencontré une situation où une non-méthode void manque un retour de l'énoncé et le code compile. Je sais que les déclarations après la boucle while sont inaccessible(code mort) et ne sera jamais exécutée. Mais pourquoi ne pas le compilateur même avertir sur le retour de quelque chose? Ou pourquoi un langage nous permettent d'avoir une non-méthode void avoir une boucle infinie et ne pas rentrer quoi que ce soit?
public int doNotReturnAnything() {
while(true) {
//do something
}
//no return statement
}
Si j'ajoute une instruction de saut(même un conditionnelles) dans la boucle while, le compilateur se plaint de l'infâme erreurs: 'Méthode ne retourne pas de valeur" (Eclipse) et de "ne Pas tous les chemins de code de retour d'une valeur" (Visual Studio)
public int doNotReturnAnything() {
while(true) {
if(mustReturn) break;
//do something
}
//no return statement
}
Cela est vrai de Java et en C#