2012-12-10 13 views
7

Sobald eine Ausnahme in diesem Code gefangen ist, wird die menuSystem Methode ausgeführt, aber sobald ich eine Zahl eingeben, wird das Programm geschlossen und die Meldung "Build ist erfolgreich" wird angezeigt . Gibt es eine Möglichkeit, in die While-Schleife zurückzukehren, sobald eine Ausnahme aufgetreten ist?Schleife nach Abfangen einer Ausnahme in try/catch fortführen

public static void main(String[] args) { 
    final UnitResults myUnit = new UnitResults(10, "Java"); 
    int option = menuSystem(); 

    try { 
     while (option != 0) { 
     final Scanner keyb = new Scanner(System.in); 
     System.out.println(""); 
     switch (option) { 
     } 
     } 
    } catch (Exception InputMismachException) { 
     System.out.println("\nPlease Enter a Valid Number\n"); 
     option = menuSystem(); 
    } 
} 
+3

Sie möchten den Versuch/Fang innerhalb der While-Schleife setzen – antlersoft

+1

Bitte formatieren Sie Ihren Code besser, wenn Sie um Hilfe in einem öffentlichen Forum bitten. – Perception

+0

Wenn Sie Ihren Code korrekt einrücken, werden Sie diese redundanten Kommentare nicht benötigen. –

Antwort

15

setzen Sie Ihre try/catch in Ihrem while-Schleife:

while (option != 0) { 
     final Scanner keyb = new Scanner(System.in); 
     System.out.println(""); 
     try { 
      switch (option) { 

      } 
     } catch (Exception InputMismachException) { 
      System.out.println("\nPlease Enter a Valid Number\n"); 
      option = menuSystem(); 
     } 
    } 
1

gebe try und catch innerhalb des while Schleife. Wenn der Code nextInt() verwendet, müssen Sie die ungültige Eingabe überspringen, da sie im Falle einer Nichtübereinstimmung nicht konsumiert wird.

Es wäre möglich, die Ausnahme für InputMismatchException Handhabung zu vermeiden, indem Sie die hasNextInt() Methoden der Scanner, bis eine gültige Eingabe mit eingegeben wird, bevor es zu konsumieren:

while (!kb.hasNextInt()) kb.next(); 
0

Ein anderer Weg, können Sie es tun:

List<File> directories; 
    ... 
    for (File f : directories) { 
     try { 
      processFolder(f); 
     } catch(Exception e) { 
      SimpleLog.write(e); 
     } 
    } 
+0

Ich weiß, das ist eine ältere Frage, aber könnten Sie näher erläutern, was das 'continue' in diesem Fall tun soll? – Nils

+0

Sorry, fortfahren ist impliziert. Es wird trotzdem weiter durch die Schleife gehen. – djangofan

Verwandte Themen