CodeGym /Java Blog /Random-IT /Errore codice istruzione non raggiungibile in Java
John Squirrels
Livello 41
San Francisco

Errore codice istruzione non raggiungibile in Java

Pubblicato nel gruppo Random-IT
Un'istruzione di codice irraggiungibile è un problema comune tra i principianti di Java. Molti sviluppatori alle prime armi confondono l'errore con il "codice morto", un altro fenomeno correlato a Java. Sebbene i due siano simili per manifestazione, ci sono alcune differenze che tratteremo in questo post. Oltre a questo, scoprirai quali sono i motivi più comuni per cui il tuo compilatore restituisce un'istruzione di codice irraggiungibile e scoprirai alcune semplici soluzioni per rimettere in funzione il tuo codice.

Cos'è il codice irraggiungibile?

Per definizione, un'istruzione irraggiungibile è quella che non verrà eseguita da un compilatore quando esegui codice pronto per la distribuzione. Un'istruzione di ritorno di codice irraggiungibile è in genere un segno di un errore logico all'interno del programma. Sebbene ci siano diversi motivi per cui si finisce con una simile affermazione, in tutti i casi il codice irraggiungibile è ridondante, ingombra il programma e dovrebbe essere evitato a tutti i costi.

Codice irraggiungibile vs codice morto

Nella comunità degli sviluppatori, i concetti di codice "irraggiungibile" e "morto" sono praticamente sinonimi. Tuttavia, se sei pignolo quando leggi la documentazione potresti vedere che le linee guida di sviluppo spesso menzionano i due separatamente. C'è qualche differenza tra codice morto e irraggiungibile? Fondamentalmente, la distinzione tra i due errori sta nel modo in cui il compilatore reagisce ad essi. Se il codice inserito nel compilatore è irraggiungibile , riceverai un errore di runtime di compilazione nella notifica Java. Se la tua dichiarazione è " codice morto ", non ci saranno errori di runtime - uno sviluppatore riceverà il seguente avviso di sistema:

class DeadCode {
    void deadcode_Method(boolean b) {
    System.out.println("Reachable statement");
        if(true) {
        return;
        }
    System.out.println("Unreachable statement"); // dead code
    }
}
Poiché non vi è alcun errore diretto del compilatore nel caso di codice morto, è più difficile da rilevare. Tuttavia, se tieni traccia dei ritorni di System.out.printIn , la cattura del codice morto non dovrebbe causare problemi.

Perché ottieni dichiarazioni di codice irraggiungibili

La buona notizia è che è facile rintracciare la causa di problemi di codice irraggiungibili. Ci sono tre motivi principali per cui il tuo compilatore continua a restituire errori:
  • Dichiarazioni di trasferimento. Se interrompi il codice con un'istruzione return, non verrà eseguito nulla dopo "return = true".
  • Ciclo infinito: nessun codice che hai scritto dopo il ciclo infinito verrà eseguito poiché il sistema continuerà a ripetere l'azione del ciclo. Pertanto, durante la conversione del codice in codice byte, il compilatore invierà un errore di codice irraggiungibile.
Per aiutarti a segnalare e risolvere questi problemi, ingrandiscili.

Dichiarazioni di ritorno

Un'istruzione return fa parte del gruppo di parole chiave Transfer, il che significa che termina il tuo metodo. È utile per separare le funzioni e aiuta a mantenere il codice leggibile e pulito. Tuttavia, poiché non puoi aggiungere nuove istruzioni alla funzione dopo return = true, provare a continuare la funzione dopo la parola chiave ti darà un errore del compilatore "Codice non raggiungibile". Diamo un'occhiata a un esempio di maltrattamento "return = true" e al modo in cui un compilatore reagisce.

class GFG {
    public static void main(String args[])
    {
  
        System.out.println("My code will run");
  
        return;
  
        // ironically, this code will never run
        // here’s an unreachable code message a developer gets.
        System.out.println("My code will run");
    }
}
Ecco come verrà visualizzato un uso improprio dell'istruzione return nel compilatore:

prog.java:11: error: unreachable statement
System.out.println(“My code will run”);
^
1 error
Per rafforzare ciò che hai imparato, ti suggeriamo di guardare una lezione video dal nostro corso Java

Dichiarazioni di rottura

Le istruzioni break sono un altro tipo di parole chiave con cui devi stare attento quando scrivi funzioni Java. Per definizione, la parola chiave break viene utilizzata per terminare un ciclo. Nell'esempio seguente, quando uno sviluppatore esce dal ciclo, non sarà più in grado di eseguire l'istruzione alla riga 8, quindi il compilatore mostrerà un errore di istruzione irraggiungibile. Ecco il codice di esempio che risulterà in un'istruzione di codice irraggiungibile:

public class JavaCodeGeeks
     {
    public static void main(String[] args) {
     for(int i=1;i<5;i++)
        {
        System.out.println(i);
        break;
        System.out.println("Code after break");
        }
    }
}
Osservando l'errore dal punto di vista del compilatore, otterrai la seguente dichiarazione di errore.

JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
                ^
1 error

Continua dichiarazioni

Continue è una parola chiave di controllo del ciclo utilizzata per ripetere le azioni. Ogni volta che vuoi che l'esecuzione di un ciclo inizi da zero, aggiungi continue al tuo codice. L'istruzione è utile per aiutare gli sviluppatori a scegliere quali istruzioni del ciclo desiderano ripetere e quelle che non inseriscono nell'iterazione. Sebbene continuare sia una parola chiave semplice da usare, non avere una piena comprensione di come funziona porta gli sviluppatori alla trappola del "codice irraggiungibile". Poiché, dopo aver incontrato un continue, un sistema ripeterà il ciclo, la parola chiave non sarà in grado di raggiungere le istruzioni che la seguono. Supponiamo che tu abbia il seguente codice:

public class JavaIsFun
{
    public static void main(String[] args) {
        for(int i=0;i<8;i++)
        {
            System.out.println(i);
            if(i==5)
            {
                continue;
                System.out.println("Coding after continue");
            }
        }
    }
}
Il sistema non eseguirà la tua istruzione "Coding after continue" - il compilatore ti informerà immediatamente.

JavaIsFun.java:10: error: unreachable statement
                                System.out.println("Coding after continue");

Cicli infiniti

Uno scenario simile agli esempi di casi d'uso delle parole chiave "break" e "continue" è quello di un ciclo infinito. Quando si progetta un ciclo infinito, uno sviluppatore dovrebbe ricordare che nessuna istruzione successiva verrà mai eseguita. Pertanto, se non interrompi il ciclo, tutto il codice scritto dopo sarà irraggiungibile. Ecco un interessante esempio di cattiva gestione del ciclo infinito da verificare:

public class JavaCodeGym
{
    public static void main(String[] args) {
        while(true)
        {
            System.out.println("Hey there");
        }
        System.out.println("Nice to see you");
    }
}
Riesci a indovinare dove si nasconde l'errore? Il compilatore lo indicherà subito dopo aver eseguito il codice:

//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
                System.out.println("Nice to see you");
‘
Poiché c'è un ciclo infinito prima di "Piacere di vederti" , l'istruzione non verrà mai eseguita e continuerà a restituire un errore di codice irraggiungibile.

Conclusione

Per evitare codice irraggiungibile, devi assicurarti che ci sia un flusso verso tutte le istruzioni di sistema. La maggior parte dei problemi di codice irraggiungibile Java ha a che fare con la gestione delle parole chiave e la cattiva gestione dei loop. Alla fine della giornata, ricontrollare il codice è l'unico modo collaudato per evitare errori di codice irraggiungibili. Non dovresti lasciarti scoraggiare neanche da loro: l'abitudine di creare codice Java fluido arriva con anni di esperienza e pratica. Quindi, raggiungiamo l'IDE e iniziamo a creare fantastici prodotti software.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION