Heim >Java >javaLernprogramm >Wie vermeide ich Endlosschleifen bei der Behandlung von InputMismatchException in einem Try-Catch-Block?

Wie vermeide ich Endlosschleifen bei der Behandlung von InputMismatchException in einem Try-Catch-Block?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 21:56:14421Durchsuche

How to Avoid Infinite Loops When Handling InputMismatchException in a try-catch Block?

Try/Catch mit InputMismatchException Endlosschleifenproblem

Bei der Implementierung von Code, der Benutzer dazu auffordert, Ganzzahleingaben bereitzustellen, ist die Verwendung eines Try/Catch-Blocks sinnvoll gängige Praxis. Es ist jedoch wichtig, Ausnahmen korrekt zu behandeln, um Endlosschleifen zu vermeiden.

Im bereitgestellten Beispiel wird eine Ausnahme innerhalb einer do-while-Schleife abgefangen. Wenn eine InputMismatchException ausgelöst wird, wird die Meldung „Error!“ angezeigt. Die Meldung wird wiederholt angezeigt, ohne dass nachfolgende Schleifeniterationen ausgeführt werden. Dies liegt daran, dass der Eingabepuffer in einem inkonsistenten Zustand bleibt und der Fehler nicht einfach durch das Abfangen der Ausnahme behoben werden kann.

Um dieses Problem zu beheben, sind die folgenden Schritte erforderlich:

  • In Rufen Sie den Catch-Block input.next() auf. um den Eingabepuffer zu löschen, sodass der Benutzer in der nächsten Iteration gültige Daten eingeben kann.
  • Erwägen Sie die Verwendung von hasNextInt() vor dem Lesen von Ganzzahlen, um zu überprüfen, ob gültige Eingaben verfügbar sind, wodurch die Wahrscheinlichkeit von Ausnahmen verringert wird.

Hier ist ein modifizierter Codeausschnitt, der diese Korrekturen demonstriert:

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next();  // Clear the input buffer
}

Außerdem ist es Es empfiehlt sich, explizite Catch-Blöcke für bestimmte Ausnahmen wie InputMismatchException zu verwenden, um diese angemessen zu behandeln.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Endlosschleifen bei der Behandlung von InputMismatchException in einem Try-Catch-Block?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn