try-catch Block Verständnisfrage

cheat.008

Aktives Mitglied
Hallo Java-Freunde,

wird im folgenden Beispiel eine NumberFormatException durch das parsen des Strings s ausgelöst und der catch-Teil abgearbeitet, wird allgemein nach einem catch-Block der try-Block noch einmal versucht (abgesehen von der while-Schleife)?


Code:
...
  public static void main( String[] args ) {
    int number = 0;
 
    while ( true ) {
      try {
        String s = javax.swing.JOptionPane.showInputDialog( "Bitte Zahl eingeben" );
        number = Integer.parseInt( s );
    
        break;
      }
      catch ( NumberFormatException e ) {
        System.err.println( "Das war keine Zahl!" );
      }
    }

    System.out.println( "Danke für die Zahl " + number );
    System.exit( 0 );
  }
...
 
Zuletzt bearbeitet:

RoNa

Bekanntes Mitglied
Try-Block wird nicht wiederholt. Wenn du auf jeden Fall willst, das etwas ausgeführt wird, benutze finally{..}
 

Neumi5694

Top Contributor
catch ist für die Fehlerbehandlung des Try gedacht, mehr nicht. Schleifen musst du selbst schreiben.finally wird nach try/catch ausgeführt, so oder so findet aber keine Wiederholung statt.
 

L.Y.vonBerg

Mitglied
Das würde ja auch keinen Sinn ergeben. Welchen Vorteil hat es (normalerweise) etwas nochmal zu versuchen, was schon mal schiefgelaufen ist?
Methoden können sich allerdings selbst aufrufen. Aber ob das so guter Stil ist, kann ich dir nicht sagen...
 

Neumi5694

Top Contributor
Naja, bei der Auswertung einer Eingabe oder dem Einlesen von veränderbaren Daten ergibt das sehr wohl Sinn, aber eben nur in dem Fall und darum muss man sich selbst kümmern. Man muss schon selbst sagen, was im Fehlerfall passieren soll.
 

L.Y.vonBerg

Mitglied
Mir ist grade noch aufgefallen, dass die Schleife, die du hast, doch zu einer Wiederholung des try-Blocks führt. Ist dir bewusst, dass sich das Programm so lange in einer Schleife aufhängt bis "s" eine Zahl wird? Der "catch-Block" enthält ja kein "break"
 

mrBrown

Super-Moderator
Mitarbeiter
Mir ist grade noch aufgefallen, dass die Schleife, die du hast, doch zu einer Wiederholung des try-Blocks führt. Ist dir bewusst, dass sich das Programm so lange in einer Schleife aufhängt bis "s" eine Zahl wird? Der "catch-Block" enthält ja kein "break"
Das ist ja auch der Sinn, das soll so lange laufen, bis eine Zahl eingegeben wird.
 
X

Xyz1

Gast
break; ist etwas unschön und System.exit( 0 ); ist auch etwas unschön, aber ansonsten ist es durchweg Usus, das Benutzereingabenvalidierung über Ausnahmen gesteuert werden darf.

Fast schön finde ich auch, daß hier mal nicht Scanner an falscher Stelle verwendet wurde.

Vielleicht sollte ich das mal in meine Signatur tun. :oops:
 

mrBrown

Super-Moderator
Mitarbeiter
Fehlerbehandlung legitim, kein Scanner, Gui hübsch, alles toll.
Dabei ist es doch so viel schöner :p

Java:
int number = -1;

do {
    String s = javax.swing.JOptionPane.showInputDialog("Bitte Zahl eingeben");
    if (s.matches("\\d+")) {
        Scanner scanner = new Scanner(s);
        number = scanner.nextInt();
    } else {
        System.err.println("Das war keine Zahl!");
    }
} while (number < 0);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Unendlich Wiederholungsfehler bei try catch - Block Allgemeine Java-Themen 3
N String aus Try/Catch-Block übernehen Allgemeine Java-Themen 14
B Execption auf Oberfläche werfen, try-catch-Block Allgemeine Java-Themen 6
E try/catch Block um ganzes Programm Allgemeine Java-Themen 10
T rießiger try - catch - Block Allgemeine Java-Themen 13
T Testing JUnit5: try ... catch arbeitet nicht sauber Allgemeine Java-Themen 6
M IndexOutOfBoundsException / Try-Catch Allgemeine Java-Themen 9
K Zweifacher Try-Catch Allgemeine Java-Themen 6
ralfb1105 LogManager logger schreibt nicht in Catch() Zweig Allgemeine Java-Themen 2
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
H try catch Allgemeine Java-Themen 4
V Designfrage: try-catch-throws Allgemeine Java-Themen 11
E Immer nur der Catch-Zweig Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
R return in try-catch-Blöcken Allgemeine Java-Themen 6
I Exceptions - weder catch- noch finally-Klausel funktioniert Allgemeine Java-Themen 12
F try und catch Blöcke Allgemeine Java-Themen 3
Final_Striker Exceptionhandling: Richtige Verwendung des Try/Catch Blocks Allgemeine Java-Themen 14
M Try-Catch: wie wird Variable bei Exception initialisiert? Allgemeine Java-Themen 8
P Methodenaufruf von catch Allgemeine Java-Themen 2
S native methoden in try / catch ? Allgemeine Java-Themen 3
V Was tun mit "nötigen" Catch-Blöcken? Allgemeine Java-Themen 3
V Try-Catch und Code der folgt? Allgemeine Java-Themen 3
B Try/Catch in While-Schleife mit Scanner - Hilfe! Allgemeine Java-Themen 3
M try-catch (Wie erzwing ich die catch-Anweisung)? Allgemeine Java-Themen 13
L Try ... Catch Allgemeine Java-Themen 3
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
Neumi5694 Lambda - Block vs "Anweisungsliste" Allgemeine Java-Themen 8
I Java Optionals mit return-Block Allgemeine Java-Themen 2
B Sudoku-Block-Prüfung Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
T Warum ein privileg block? Allgemeine Java-Themen 0
H Probleme mit finally-Block und close() Allgemeine Java-Themen 4
G Initialization Block? Allgemeine Java-Themen 8
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
J synchronized block mit this und wait() Allgemeine Java-Themen 5
D break block by label Allgemeine Java-Themen 14
M Konstruktor / statischer Block Allgemeine Java-Themen 13
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
G GC Warning: Repeated allocation of very large block Allgemeine Java-Themen 35
conan2 static-Block in Klassen Allgemeine Java-Themen 6
H Ein synchronized Block ausreichend? Allgemeine Java-Themen 6
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
RalleYTN Collections Verständnisfrage zu Objektreferenzen in Listen Allgemeine Java-Themen 5
O log4j - Verständnisfrage Allgemeine Java-Themen 1
M Verständnisfrage bei Hausaufgabe Allgemeine Java-Themen 7
L Getter und Setter Verständnisfrage Allgemeine Java-Themen 10
H MVC - Verständnisfrage Allgemeine Java-Themen 12
E Verständnisfrage zu synchronized-Blöcken Allgemeine Java-Themen 3
E Verständnisfrage bezüglich Threads Allgemeine Java-Themen 4
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
T Verständnisfrage bei Nachbarschaftsbetrachtung Allgemeine Java-Themen 8
M Verständnisfrage Exceptions Allgemeine Java-Themen 2
A Generics Verständnisfrage Allgemeine Java-Themen 7
J Verständnisfrage zu Casts auf Interfaces Allgemeine Java-Themen 5
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
J Verständnisfrage zu exceptions Allgemeine Java-Themen 3
J volatile Verständnisfrage Allgemeine Java-Themen 6
S JAAS - Verständnisfrage Allgemeine Java-Themen 2
G allgemein synchroniszed verständnisfrage Allgemeine Java-Themen 19
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
K Verständnisfrage. Allgemeine Java-Themen 9
T Eine Verständnisfrage Allgemeine Java-Themen 15
T Kleine Verständnisfrage zu Stringbuffer Allgemeine Java-Themen 2
sliwalker Verständnisfrage ObserverPattern Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben