2012-08-14 4 views
2
if (myCondition1 && myCondition2 && myCondition3) 
    { 
    ... 
    } 

J'ai écrit ce code et exécuté avec succès. mais j'ai eu un avertissement sur une partie de (...). L'avertissement est "code mort". C'est juste intéressant pour moi. Avez-vous une idée? thank youPourquoi ai-je un avertissement "Code mort"?

+1

êtes-vous sûr de bien arriver à la partie du code "mort"? – elyashiv

+2

Nous avons besoin de plus de code (réel) pour voir pourquoi cet avertissement est apparu. Habituellement, vous avez quelque chose comme 'System.exit (0); System.out.println ('blab'); ', où la deuxième commande n'est jamais accessible à l'exécution. – Sirko

+1

supposons que vous avez myCondition1 = true et myCondition2 =! MyCondition1. – brano

Répondre

6

"Code mort" est un code qui ne sera jamais exécuté. Il est probable que l'une de vos conditions soit codée en dur à false quelque part, rendant le conditionnel à l'intérieur du if toujours faux.

3

Le code mort signifie qu'il ne sera jamais exécuté. Par exemple.

void someMethod() { 
    System.out.println("Some text"); 
    return; 
    System.out.println("Another Some text"); // this is dead code, because this will never be printed 
} 

Même chose dans le cas de la vérification de votre condition, par ex.

String obj = ""; 
if(obj == null && obj.equals("")) { // here you get warning for Dead code because obj is not null and first condition is false so obj.equals("") will never evaluate 

} 
0

Votre code dans le bloc n'est jamais atteint. La raison est très probablement que l'une des conditions est toujours fausse.

0

Si un ou plusieurs de myCondition1, myCondition2 et myCondition3 sont toujours faux (comme private bool monCondition1 = false;) alors ce code dans le if ne sera jamais exécuté.

0

Cela peut se produire pour un certain nombre de raisons. Soit l'ensemble du bloc if est mort, causée par quelque chose comme ce qui suit:

boolean condition1 = true; 
boolean condition 2 = !condition1; 

if(condition1 && condition2) { 
    //This code is all dead 
    Foo f = fooFactory(); 
    f.barr(new Bazz()); 
} 

Ou vous sans condition de quitter le bloc if en utilisant quelque chose comme return, break ou continue, comme indiqué ci-dessous:

for(Foo f : foos) { 
    if(true) { 
     f.barr(new Bazz()); 
     break; 
     //Everything after here is dead 
     System.out.println("O noes. I won't get printed :("); 
    } 
} 
Questions connexes