Exception für Abbrechen-Schaltfläche JOptionpane

OSchriever

Bekanntes Mitglied
Hi,
ich habe eine Frage zur NumberFormatException im Joptionpane.showInputDialog-Fenster:

Ich habe folgenden Code, um die Exception abzufangen:
private static String lesen(String text){
String eingabeTemp;


eingabeTemp = JOptionPane.showInputDialog("Bitte geben Sie einen int-Wert ein:");
if(eingabeTemp == null) {
System.out.println("Die Eingabe für " + text + " wurde abgebrochen!");
}

return (eingabeTemp);

}

Nun meine Frage: Wie kann ich die NumberFormatException mit Try-Catch abfangen? Also ich möchte, dass nicht mehr eingabeTemp auf null geprüft wird.
Ich habe schon so einiges ausprobiert, hoffe mir kann jemand weiterhelfen.

Vielen Dank
 

mihe7

Top Contributor
X

Xyz1

Gast
Java:
import javax.swing.JOptionPane;

public class Tempo {
	 int tempo = -1; // Modifier?

	public void lesen() {
		while (true) {
			String i = JOptionPane.showInputDialog("Gib Tempo ein (int-Wert):");
			if (i != null && !i.isEmpty()) {
				try {
					tempo = Integer.parseInt(i);
					return;
				} catch (NumberFormatException e) {
					e.printStackTrace();
					// sinnvolle Nachricht hier
				}
			}
		}
	}

	public static void main(String[] args) {
		Tempo tem = new Tempo();
		tem.lesen();
	}
}
 

OSchriever

Bekanntes Mitglied
Doch, wenn der Benutzer abbricht, ist eingabeTemp null.


Kannst Du das genauer erklären? Mir ist noch nicht klar, was Du machen willst.

Ich habe das als Aufgabe bekommen, und mir ist selbst nicht klar was der Tutor von mir möchte. Es soll ein "Teil vom Code" geändert werden, meiner Meinung nach so, dass das Prüfen auf "null" wegfällt. Mich macht es aber auch etwas stutzig, dass die Aufgabe auch nur mit wenig Punkten bewertet wird und deswegen "eigentlich einfach sein müsste".
Hier einmal der Code so wie er original ist:

-------------------------------------------------------------------------------------------------------------------------------
private static String lesen(String text) throws AbbruchException {
String eingabeTemp;
//bitte in einer Zeile eingeben

eingabeTemp = JOptionPane.showInputDialog("Bitte geben Sie einen " + text + " Wert ein:");
if(eingabeTemp == null) {
throw new AbbruchException("Die Eingabe für " + text + " wurde abgebrochen!");
}

return (eingabeTemp);
------------------------------------------------------------------------------------------------------------------------------
"text" ist eine String-Variable >"int"<
Dafür werfe ich eine eigene Exception. Die soll, so wie ich das verstanden habe wohl weg, und dafür dann eine NumberFormatException.

Dann hier die Aufgabenstellung:

In unserer Klasse für die grafischen Eingabedialoge überprüfen wir durch den Vergleich einer Variablen mit dem Wert null, ob die Eingabe abgebrochen wurde. Diese Konstruktion kann grundsätzlich auch durch eine Ausnahmebehandlung ersetzt werden. Welche Ausnahme käme dafür infrage? Wie könnten Sie diese Ausnahme auslösen?

Wie kann ich denn dann mit TryCatch überprüfen, ob >abbrechen< geklickt wurde?

Danke
 

OSchriever

Bekanntes Mitglied
Ja aber wie mache ich das? Jedes mal wenn ich versuche, das JOptionPane in einen Try-Catch Block zu setzen, dann meckert Eclipse, dass die Variable möglicherweise nicht initialisiert ist. Wenn ich ihr dann oben vorweg schon "null" gebe, dann läuft das Programm zwar, aber meine Exception fängt das nicht auf... :(
Wie kann ich den Code denn dann am Besten schreiben?
 

mihe7

Top Contributor
Du musst die NullPointerException (kurz: NPE) auch provozieren, z. B. indem Du versuchst, eine Methode von eingabeTemp aufzurufen:
Java:
try { 
    String eingabeTemp = JOptionPane.showInputDialog("Bitte geben Sie einen " + text + " Wert ein:");
    return eingabeTemp.toString(); // hier der Versuch, toString() aufzurufen - falls eingabeTemp == null => NPE
} catch (NullPointerException ex) {
    throw new AbbruchException("Die Eingabe für " + text + " wurde abgebrochen!");
}
 

OSchriever

Bekanntes Mitglied
Super, klappt prima :) Vielen Dank.

Eine Frage hätte ich noch, wofür ist es wichtig, sich eigene Exceptions zu erstellen? Also hier habe ich ja die AbbruchException. warum kann ich das nicht einfach so codieren:
catch(NullPointerException ex){
system.out.println: ("Abbrechen wurde geklickt");
 

mihe7

Top Contributor
Eine Frage hätte ich noch, wofür ist es wichtig, sich eigene Exceptions zu erstellen?
Vielleicht sollte man zunächst darauf eingehen, wozu Exceptions überhaupt dienen; auch vor dem Hintergrund Deiner nächsten Frage. Ich würde das mal so zusammenfassen: Eine Funktion (Methode) kann unabhängig von ihrer Implementierung über Vor- und Nachbedingungen charakterisiert werden. Eine Exception dient einer Methode dazu, anzuzeigen, ob und warum sie eine Nachbedingung nicht erfüllen kann oder eine Verletzung einer Vorbedingung vorliegt.

Da es verschiedene Arten von Verletzungen und Bedingungen gibt, die man ggf. unterscheiden möchte, gibt es eben auch verschiedene Arten von Exceptions. Ob und wann es sinnvoll ist, eigene Exceptions zu definieren, da scheiden sich allerdings die Geister.

Also hier habe ich ja die AbbruchException. warum kann ich das nicht einfach so codieren:
Beim Aufruf der Methode (also try-catch außerhalb der Methode) kannst Du das problemlos machen. Innerhalb der Methode stellt sich die Frage nach der Nachbedingung: was soll denn die Methode zurückgeben und kannst Du das, wenn Du die Exception in der Methode abgefangen hast?

Dazu mal ein deutlicheres Beispiel:
Java:
/** liefert die Person mit der angegebenen ID. */
Person getPerson(PersonId id) { ... }

/** sucht die Person mit der angegebenen ID. */
Optional<Person> findPerson(PersonId id) { ... }
Im Fall von getPerson ist die Vorbedingung, dass eine Person mit der angegebenen ID existiert und die Nachbedingung, dass eben diese Person zurückgegeben wird. Existiert die Person nicht -> Exception. Kann die Person nicht geladen werden -> Exception.

Im Fall von findPerson wird eine Person "lediglich" gesucht. Darum wird hier ein Optional zurückgegeben. Existiert die Person nicht -> kein Problem, wird ein "leeres" Optional zurückgegeben. Existiert die Person, kann sie aber nicht geladen werden, kann und sollte durchaus eine Exception fliegen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Exception für String Java Basics - Anfänger-Themen 9
EnHancEd[] Exception Übung für Einsteiger Java Basics - Anfänger-Themen 14
M Gutes Beispiel für Exception- werfende & behandelnde Methode Java Basics - Anfänger-Themen 5
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben