Switch-Anweisungen ohne Break
Ein Fehler tritt auf, wenn einer Switch-Anweisung Break-Anweisungen zwischen Fällen fehlen. Betrachten Sie den folgenden Codeausschnitt:
switch (x) { case 0: // code case 1: // code case 2: // code }
Erklärung
Java's switch-Anweisung erfordert Break-Anweisungen, um Fälle zu trennen. Ohne Pause wird Code in nachfolgenden Fällen ausgeführt, auch wenn die Bedingung mit einem vorherigen Fall übereinstimmt. Wenn im obigen Beispiel x 1 ist, werden beide Fälle 1 und 2 ausgeführt.
Dieses Verhalten ist normalerweise unbeabsichtigt und kann zu einer falschen Programmlogik führen. Findbugs identifiziert diesen potenziellen Fehler und kennzeichnet ihn als Warnung.
Verwendung
Break-Anweisungen werden verwendet, um die Ausführung eines Falls zu beenden und zu verhindern, dass Code in einen nachfolgenden Fall durchfällt Fälle. Der folgende Code ist grammatikalisch korrekt und führt nur den Code für den passenden Fall aus:
switch (foo) { case 0: doSomething(); break; case 1: doSomethingElse(); break; default: doSomeOtherThing(); break; }
Ausnahme
In bestimmten Szenarien kann es wünschenswert sein, dies absichtlich zuzulassen Code, der auf nachfolgende Fälle übertragen wird. Zum Beispiel
switch (foo) { case 0: case 1: doSomething(); break; case 2: doSomethingElse(); break; default: doSomeOtherThing(); break; }
In diesem Fall wird doSomething() ausgeführt, wenn foo entweder 0 oder 1 ist. Dies ist ein häufiges Muster, das als „Fall-Through“ bekannt ist und im Allgemeinen als akzeptabel angesehen wird, wenn kein Code vorhanden ist erscheint zwischen den Fällen (z. B. Fall 1 und Fall 2). Die meisten Analysetools kennzeichnen Fall-Through-Fälle in diesen Situationen nicht als Fehler.
Das obige ist der detaillierte Inhalt vonWarum benötigen Switch-Anweisungen Break-Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!