break and label, “L’etichetta MyLabel è mancante”

Ho un codice come questo:

if(condition1) { break MyLabel; } while(true) { //some code here MyLabel: if(condition2) break; //more code here } 

e ottengo questo errore:

L’etichetta MyLabel è mancante.

Cosa c’è che non va?

    È ansible interrompere solo un’etichetta che si trova su un’istruzione che racchiude testo . Nel tuo esempio, l’etichetta NON è su un’istruzione che racchiude l’istruzione break .

    (Per quel che vale, anche i linguaggi di livello superiore che supportano goto non ti permettono di saltare nel mezzo di un loop dall’esterno. Sto pensando a C … e a linguaggi più vecchi come FORTRAN.)

    Java ti permette di uscire, ma irrompere è illegale … e ti faranno arrestare 🙂

    (Scusate, non potevo resistere.Per coloro che non capiscono la battuta, un “break in” è quando qualcuno entra in casa per rubare roba – vedi “break and enter” …)

    Non puoi usare etichette come goto in quel modo generale .
    Usa le etichette se vuoi andare a un livello più alto di codice annidato .

    per esempio

     l1: while l2: while l3: while break l1 l4: while