# Eine exception mit negativen zahlen abfangen ?



## Guest (16. Aug 2008)

Hallo Freunde , 

Ich möchte in einem Quelletxt denn ihr unten sieht, eine exception einbauen der mir negative zahlen abfangen kann . Ich habe es mit if gemacht ahat mir aber nicht gefallen. Welche Exception-Klasse muß ich dafür benutzen. ?

mfg
kaper28


```
import javax.swing.JOptionPane;

public class WeinKlasse {

	public static void main(String[] args) {

		int alter;
		double grundpreis;
		double preisProFlasche;
		{

			try {

				alter = Integer
						.parseInt(JOptionPane
								.showInputDialog("Bitte geben Sie den Alter des Weins ein : "));
				grundpreis = Integer
						.parseInt(JOptionPane
								.showInputDialog("Bitte geben Sie den Grundpreis ein  : "));
				if (alter < 0 || grundpreis < 0) {
					System.out.println("Bitte keine negative Zahlen ");
					alter = 1;
					grundpreis = 1;

					System.out
							.println("Alle beider werte wurden auf 1 zürückgesetzt");
					System.exit(0);

				} else {
					preisProFlasche = alter * grundpreis;
					System.out.println("Der Preis Beträgt :" + preisProFlasche
							+ " Euro ");
				}
			}

			catch (IllegalArgumentException e) {

				System.out.println("Bitte geben Sie nur Zahlen an  ");
			}

		}
	}
}
```


----------



## Wildcard (16. Aug 2008)

Ich verstehe die Frage nicht. Willst du eine Exception werfen, wenn eine negative Zahl eingegeben wurde?


----------



## Guest (16. Aug 2008)

Wildcard hat gesagt.:
			
		

> Ich verstehe die Frage nicht. Willst du eine Exception werfen, wenn eine negative Zahl eingegeben wurde?



ja , sorry für die doofe ausdrückung, ich muß muß besser ausdrücken.

Ja das stimmt , so will es haben .


----------



## Illuminatus0301 (16. Aug 2008)

da ist aber deine Variante besser. Exceptions sind dafür (un)vorhersehbare Programm-/Hardware-/Protokoll-/...-Fehler vorgesehen, nicht für falsche Benutzereingaben. Eine Möglichkeit das ganze noch benutzerfreundlicher zu machen ist, die Eingabedialoge selber zu schreiben und dabei ein FormattedTextField zu benutzen, da kannst einstellen, dass du z.B. nur positive Werte haben möchtest.


----------



## Leroy42 (16. Aug 2008)

Anonymous hat gesagt.:
			
		

> ja , sorry _für die doofe ausdrückung_, ich muß muß besser ausdrücken.



Ob _drücken_ da noch irgendwie helfen kann?  :shock:  ???:L


----------



## Guest (16. Aug 2008)

Leroy42 hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...



Leroy42 , sei still am besten , hast du ne antwort für meine Frage ?


----------



## Tobias (16. Aug 2008)

Schreib dir eine eigene Exception-Klasse.

BTW: Ich würde hier keine Exception schmeißen, denn Exceptions, die einfach bis an die Runtime gehen und dann in die Konsole gekotzt werden, sind nicht gerade das, was ich als User-freundlich titulieren würde.


----------



## Guest (16. Aug 2008)

Tobias hat gesagt.:
			
		

> Schreib dir eine eigene Exception-Klasse.
> 
> BTW: Ich würde hier keine Exception schmeißen, denn Exceptions, die einfach bis an die Runtime gehen und dann in die Konsole gekotzt werden, sind nicht gerade das, was ich als User-freundlich titulieren würde.



Tobias das habe ich auch gedacht , nur wie mache das genau ?


----------



## Tobias (17. Aug 2008)

Naja, du schreibst eine Klasse, die von Exception oder von RuntimeException erbt. Die Details sind in jedem beliebigen Java-Lehrbuch erklärt. Online zum Beispiel in "Java ist auch eine Insel".


----------



## Guest (17. Aug 2008)

```
package package1;

public class ExcepionKlasse  extends IllegalArgumentException {
	
	

		
		/**
		 * die serialVersionUID wurde automatisch über Eclipse ergänzt
		 */
		private static final long serialVersionUID = 6034903258759501562L;


		//der Standard-Konstruktor
		ExcepionKlasse() {
			super();
		}
		
		//der Konstruktor zur Übergabe einer Meldung
		//er ruft über super den Konstruktor der Basisklasse auf
		ExcepionKlasse(String meldung) {
			super(meldung);
		}
	}
```


```
//die Klasse befindet sich im Package eindialogV2
package package1;

//für den Eingabedialog
import javax.swing.JOptionPane;

public class EingabeDialogV2 {

	public static void main(String[] args) {

		EingabeDialogV2 eingabe = new EingabeDialogV2();
		eingabe.einlesen();

	}

	private static void einlesen() throws ExcepionKlasse {
		int alter;
		double grundpreis;
		double preisProFlasche;

		try {

			alter = Integer
					.parseInt(JOptionPane
							.showInputDialog("Bitte geben Sie den Alter des Weins ein : "));
			grundpreis = Integer.parseInt(JOptionPane
					.showInputDialog("Bitte geben Sie den Grundpreis ein  : "));
			if (alter < 0 || grundpreis < 0) {
				System.out.println("Bitte keine negative Zahlen eingeben");

				System.out.println("Program wird beendet");
				System.exit(0);
			} else {

			}
			preisProFlasche = alter * grundpreis;
			System.out.println("Der Preis Beträgt :" + preisProFlasche
					+ " Euro ");

		}

		catch (IllegalArgumentException e) {

			System.out.println("Bitte geben Sie nur Zahlen ein . ");

		}

	}

}
```

Ich meine so was , eine Exception Klasse und eine Main Klasse


----------



## Guest (17. Aug 2008)

ist das so richtig ? Funktionieren  tut es schon..


----------



## Tobias (17. Aug 2008)

Richtig in dem Sinne, das es compiliert: vermutlich schon; richtig in dem Sinne, tut es was du willst: nein. Du must die Exception noch auslösen, wenn eine negative Zahl eingegeben wurde. Exceptions löst man mit dem Schlüsselwort "throws" aus.


----------

