PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : catch-Block für "Eingabe ist größer als Variable foo"



d@tenmaulwurf
22-02-2006, 09:45
Hallo!

ich bin Java-Anfänger und beschäftige mich grad mit try-/catch-Blöcken.

Wenn ich jetzt sowas hier habe:



[...]
int gewinnzahlen = 0;
[...]
try
{
String input2 = JOptionPane.showInputDialog ("Bitte eine Zahl zwischen 1 und 100 eingeben:");
if (input2 == null)
System.exit(0);
gewinnzahlen = Integer.parseInt (input2);
break;
}
catch ( NumberFormatException e )
{
JOptionPane.showMessageDialog (null, "Sie müssen eine Zahl eingeben!");
}


Kann man einen eigenen weiteren catchblock formulieren der in etwa so aussieht?:



catch ( gewinnzahlen < 1 || gewinnzahlen > 100 )
{
JOptionPane.showMessageDialog (null, "Die Zahl muss größer als 1 und keienr als 100 sein!");
}


Geht sowas? Wenn ja, wie muss das syntaktisch korrekt aussehen?

Vielen Dank im voraus!

d@tenmaulwurf

Caveman
22-02-2006, 09:51
Ich denke, Du hast das mit try und catch noch nicht ganz verstanden.
Den zweiten catch-Block, den Du konstruiert hast, sollte ein if-Block sein.

mwanaheri
22-02-2006, 10:27
es ist etwas mit Kanonen auf Spatzen geschossen, aber du kannst auch eine eigene Ausnahmeklasse basteln. Die leitest du einfach aus einer anderen Ausnahmeklasse ab. Dann kannst du die Ausnahme auslösen, z.B. mit

if ( gewinnzahlen < 1 || gewinnzahlen > 100 )
throw new ValueOutOfRangeException("Zahl außerhalb des Wertebereiches")

Diese Ausnahme kannst du dann im catch-Block fangen

catch (ValueOutOfRangeException voore){
<Fehlerbehandlung>
}

Wenn du die Ausnahme gleich fängst, ist das natürlich etwas übertrieben, aber du kannst nun die Ausnahme auch weiterwerfen und an anderer Stelle behandeln. Dann lohnt sich das Werfen von Ausnahmen.

Caveman
22-02-2006, 10:30
Ich hab's mir noch mal ueberlegt.

Es wurde gehen, wenn es mir auch etwas umstaendlich erscheint:
Du musst eine Exception-Klasse erstellen.
Dann kannst Du mit
throw new MeineExceptionKlasse("Die Zahl muss größer als 1 und kleiner als 100 sein!"); eine Exception werfen (vorher mit if abfragen!).
und anschliessend diese mit
catch(MeineExceptionKlasse e){ ... }; abfangen.