Java >> Tutoriel Java >  >> Java

Résolution de l'instruction Java inaccessible

L'instruction java unreachable est une erreur de compilation générée lorsque le compilateur détecte un code qui n'a pas été exécuté dans le cadre du programme. Lorsque vous atteignez cet état, cela signifie que votre programme ne sera plus exécuté, et donc ce morceau de code est inutile et doit être supprimé.

Il y a quelques raisons qui pourraient résulter de ce problème. Discutons de certaines des causes possibles et de la manière de résoudre ce problème :

Déclaration de retour

L'exécution de la fonction se termine lorsqu'une instruction return est appelée. Toute instruction dans la fonction qui vient après l'instruction return ne sera pas exécutée. Ainsi, l'écriture de votre code après cette instruction de retour entraîne une instruction Java inaccessible.
Exemple :

public class Main
{
	public static void main(String[] args) {
	    
	    System.out.println("The java unreachable statement");
	return;
 
        System.out.println("I will not  be printed");
	}
}

Sortie :

Main.java:16: error: unreachable statement
        System.out.println("I will not  be printed");
        ^
1 error

Dans l'exemple ci-dessus, nous avons une instruction print après l'instruction return. En utilisant l'instruction return, nous disons au contrôle de retourner explicitement à l'appelant; par conséquent, tout code après celui-ci sera considéré comme un code mort car il ne sera jamais exécuté.

Pour résoudre cette erreur, revérifiez le flux de votre code et assurez-vous que l'instruction return est toujours la dernière ligne de code dans une fonction.
Exemple :

public class Main
{
	public static void main(String[] args) {
	    
	  System.out.println("The java unreachable statement");
      
      System.out.println("I will not  be printed");
	return;
 
        
	}
}

Sortie :

The java unreachable statement
I will not  be printed

Boucle infinie

Une boucle infinie est une boucle sans fin. Son code ne cesse de réitérer l'emplacement de la boucle, de sorte que tout code écrit après la boucle ne sera jamais exécuté.
Exemple :

public class Main
{
	public static void main(String[] args) {
	    
	  for(;;){
       break;
        
       System.out.print("I'm outside the infinite loop");
	  }
        
	}
}

Sortie :

Main.java:10: error: unreachable statement
       System.out.print("I'm outside the infinite loop");
       ^
1 error

Le code de la boucle infinie exécute la boucle pour toujours. Cela peut consommer le processeur, empêchant l'exécution d'autres programmes. En tant que programmeurs, nous bloquons ou dormons la boucle en ajoutant l'instruction break pour permettre à d'autres applications de s'exécuter. Tout code après l'instruction break ne sera jamais exécuté. Pour résoudre ce problème, assurez-vous qu'aucun code n'est écrit après avoir dormi ou bloqué la boucle infinie.

Toute instruction après continuer

Le continuer L'instruction impose l'exécution d'une boucle dans un code. Toute instruction après l'instruction continue ne sera pas exécutée car l'exécution saute au début de la boucle pour continuer l'exécution du code précédent.
Exemple :

public class Main
{
	public static void main(String[] args) {
	    
	   for (int j = 0; j < 5; j++)
        {
             System.out.println(j);
            continue;
           System.out.println("Java unreachable statement");
       }        
	}
}

La suppression du système d'impression en dehors de la fonction entraînera l'exécution du code obsolète.

public class Main
{
	public static void main(String[] args) {
	    
	   for (int j = 0; j < 5; j++)
        {
             System.out.println(j);
            continue;
          
        }

      System.out.println("Java unreachable statement");
        
	}
}

Sortie :

0
1
2
3
4
Java unreachable statement

Toute déclaration après la pause

Les instructions break sont utilisées pour terminer une boucle. Tout code après l'instruction break signifie que le code ne sera pas compilé car l'exécution du programme s'est terminée par le break. Cela se traduira par l'instruction java inaccessible.

public class Main
{
	public static void main(String[] args) {
	    
	   for (int i = 0; i < 5; i++)
        {
            System.out.println(i);
            break;
        System.out.println("Java unreachable statement");
          
        } 
	}
}

Sortie :

Main.java:10: error: unreachable statement
        System.out.println("Java unreachable statement");
        ^
1 error

Toute instruction après avoir levé une exception

Toute instruction ajoutée dans un bloc try-catch après avoir levé une exception est un code mort. En effet, l'événement exceptionnel force l'exécution à passer à l'instruction du bloc catch.
Exemple :

public class Main
{
	public static void main(String[] args) {
	    
	   try {
            throw new Exception("New Exception");
            //java Unreachable code
            System.out.println("Dead code");
        }
        catch (Exception exception) {
           
            System.out.print("Home");
        }
	}
}

Sortie :

Main.java:9: error: unreachable statement
            System.out.println("Dead code");
            ^
1 error

La suppression de l'instruction après le bloc try-catch imprime "home".

Home

Boucle while inaccessible

Une boucle while est un bloc de code répété jusqu'à ce qu'une condition spécifique soit remplie ou vraie. Si la condition d'une boucle while n'est jamais remplie ou vraie, le code à l'intérieur de la boucle ne s'exécutera jamais, ce qui entraînera une instruction inaccessible.

public class Main
{
	public static void main(String[] args) {
	    
	   while(2>5){
            System.out.println("The greates value is 5");
      }
	}
}

Sortie :

Main.java:6: error: unreachable statement
	   while(2>5){
	             ^
1 error

Dans le code ci-dessus, 2 sera toujours supérieur à 5 ; donc cette condition ne sera jamais vraie. Toute instruction après cette condition ne sera jamais exécutée.

Comment résoudre l'instruction Java inaccessible

La résolution de cette erreur peut dépendre entièrement de vos compétences en programmation. Cependant, il y a des choses essentielles que vous ne devriez jamais faire en tant que programmeur.

  1. Ne placez aucun code après la boucle infinie
  2. Vous ne devez placer aucune instruction après les instructions return, break et continue.
  3. Évitez de mettre du code après le bloc tyr-catch

Conclusion

En tant que programmeur, il est toujours bon d'examiner le flux de votre code pour vous assurer que chaque instruction du code est accessible. Vous pouvez toujours dessiner un organigramme pour obtenir une compréhension approfondie du flux des boucles. Dans ce didacticiel, nous avons discuté des causes possibles de l'instruction java inaccessible et de la manière de la résoudre.


Bon apprentissage !


Balise Java