Exceotion.Handling Aufgabe mit "throw"

llabusch

Mitglied
Liebe Java gemeinde. Ich muss eine Aufgabe lösen, bei der ich einen Anstoß brauche...
Also ich denke, dass man mit "throw" arbeiten muss, aber wie genau entzieht sich meines Wissens....

Die Aufgabe Lautet wie folgt:

Überarbeiten Sie die Plausibilitätsprüfung in dem Konstruktor der Klasse Wein
aus dem Listing 5 dieses Studienheftes so, dass bei ungültigen Werten nicht mehr
„stillschweigend“ Standardwerte gesetzt werden, sondern jeweils eine Ausnahme
der Klasse IllegalArgumentException ausgelöst wird.
Sorgen Sie dafür, dass diese Ausnahmen an den Aufrufer weitergeleitet werden.
Erstellen Sie auch eine main()-Methode, in der Sie die Ausnahmen behandeln,
und testen Sie dort die Änderungen.​


Die Klasse Wein incl. Konstruktor(en):

Java:
public class Wein {
	private int alter;
	private double grundpreis;
	private double preisProFlasche;
	
	//der Standard-Konstruktor
	public Wein() {
		//er ruft �ber this() den Konstruktor mit den beiden Parametern auf
		//und �bergibt die Standardwerte
		this(1, 10);
	}
	
	//der Konstruktor setzt das Alter
	//der Preis erh�lt einen Standard-Wert
	public Wein(int alter) {
		//er ruft ebenfalls �ber this den Konstruktor mit den beiden Parametern auf
		this(alter, 10);
	}
	
	//der Konstruktor setzt den Preis
	//das Alter erh�lt einen Standard-Wert
	public Wein(double grundpreis) {
		//und dieser Konstruktor ruft auch den Konstruktor mit den beiden Parametern auf
		this(1, grundpreis);
	}
	
	//der Konstruktor setzt das Alter und den Grundpreis
	//er enth�lt jetzt Plausibilit�tspr�fungen
	public Wein(int alter, double grundpreis) {
		//die Plausibilit�tspr�fung f�r das Alter
		if (alter > 0)
			this.alter = alter;
		//sonst den Standardwert 1 setzen
		else
			this.alter = 1;
		//und auch f�r den Preis
		if (grundpreis > 9)
			this.grundpreis = grundpreis;
		else
			this.grundpreis = 10;
	}


DIe Main-Methode:


Java:
public class Java08a_05 {
	public static void main(String[] args) {
		//eine neue Instanz mit unsinnigen Werten erzeugen
		Wein flasche2 = new Wein(-10,20.5);
		//den Preis ausgeben
		//er wird aus Standard-Werten berechnet, die �ber den Konstruktor gesetzt werden
		System.out.println(flasche2.getPreisProFlasche());
	}
}


Ich hoffe ihr könnt mir vielleicht weiterhelfen...

Vielen Dank schon mal bis hier hin für's durchlesen! :)
 
Zuletzt bearbeitet:

Joose

Top Contributor
Also ich denke, dass man mit "throw" arbeiten muss, aber wie genau entzieht sich meines Wissens....

:toll:

Einfach den Konstruktor anpassen und bei ungültigen Werten eine Exception werfen. Wie man eine Exception wirft solltest du leicht herausfinden können ;)
Java:
public Wein(int alter, double grundpreis) {
    if (alter < 0) {
        // Exception werfen 
    }
    if(grundpreis <10){
        // Exception werfen
    }
    this.alter = alter;
    this.grundpreis = grundpreis;
}
 

kaoZ

Top Contributor
Java:
public Wein(int alter, double grundpreis) {
    if (alter < 0) {
        throw new IllegalArgumentException("Der Paramater 'alter' kann keinen Wert unter 0 haben !");
    }
    if(grundpreis <10){
       throw new IllegalArgumentException("Der Parameter 'Grundpreis' muss zwischen 10 - n € liegen !");
    }
    this.alter = alter;
    this.grundpreis = grundpreis;
}

oder einfach auch :

Java:
public class Wein {
	
	private int alter;
	private int grundpreis;
	
	
	public Wein(final int alter, final int grundpreis) {
		if(alter  == 0 | grundpreis < 10){
			throw new IllegalArgumentException("Der Parameter 'alter' darf nicht 0, und der Grundpreis nicht < 10 sein !");	
		}
		else{
			this.alter = alter;
			this.grundpreis = grundpreis;
		}
	}
	
	public static void main(String[] args) {
		new Wein(0, 12); // zum Testen 
	}
}

sobald eine der Bedingungen unterschritten wird , wird eine aussagekräftige Exception geworfen .
 
Zuletzt bearbeitet:

killermuck

Mitglied
Hallo,


Die Aufgabenstellung lautet:
Überarbeiten Sie die Plausibilitätsprüfung in dem Konstruktor der Klasse Wein aus dem Code 1.5
dieses Studienhefts so, dass bei ungültigen Werten nicht mehr stillschweigend Standadwerte gesetzt
werden, sondern jeweils eine Ausnahme der Klasse IllegalArgumenException ausgelöst wird.

Sorgen Sie dafür, dass diese Ausnahmen an den Anrufer weitergeleitet werden. Erstellen Sie auch eine
main()-Methode, in der Sie die Ausnahmen behandeln, und testen Sie dort die die Änderungen.

Ich sehe das so, das der o. g. Lösungsvorschlag, nicht die Aufgabenstellung wiedergibt, siehe fettgedrucktes.

Ich denke es muss eine separate Klasse in main() für die Ausnahmebehandlung erstellt werden, die dann an die einzelnen Methoden weitegeleitet werden und über main() müssen dann die Ausnahmen mit try und catch behandelt werdnen.

Sehe ich das so richtig?
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
Ich denke es muss eine separate Klasse in main() für die Ausnahmebehandlung erstellt werden, die dann an die einzelnen Methoden weitegeleitet werden und über main() müssen dann die Ausnahmen mit try und catch behandelt werdnen.
Ja, in der main sollten auch "falsche" Werte getestet und die Exception dann in einem catch gefangen werden.
 

killermuck

Mitglied
Hallo,

wäre das eine gute, eine schlechte, oder eine mittelmäßige Lösung zur o. g. Aufgabe?


[CODE lang="java" title="public class Java08d_01_05"]package java08d_01_05;

public class Java08d_01_05 {
public static void main(String[] args) throws IllegalArgumentException {
//eine neue Instanz zum Testen
Wein flasche1 = new Wein(0,10);
//Ausnahmebehandlung für IllegalArgumentException
if (Wein.alter <= 1 | Wein.grundpreis < 10) {
throw new IllegalArgumentException("Das 'alter' darf nicht <1 sein und der 'Grundpreis' nicht <10!");
}
//den Preis ausgeben
System.out.println("Der Preis pro Flasche beträgt: " + flasche1.getPreisProFlasche());
}
} [/CODE]

und der 2. Partder Aufgabe:

[CODE lang="java" title="public class Wein {"]package java08d_01_05;

public class Wein {
public static int alter;
public static double grundpreis;
private double preisProFlasche;

//der Konstruktor setzt das Alter und den Grundpreis
public Wein(int alter, double grundpreis) {
Wein.alter = alter;
Wein.grundpreis = grundpreis;
}
//die Methode berechnet den Preis pro Flasche
public void preisBerechnen() {
preisProFlasche = alter * grundpreis;
}

//die Methode liefert den Preis pro Flasche
public double getPreisProFlasche() {
preisBerechnen();
return preisProFlasche;
}
}[/CODE]

Vielen Dank für euere Bemühungen!

Gruß
Lars
 

mrBrown

Super-Moderator
Mitarbeiter
wäre das eine gute, eine schlechte, oder eine mittelmäßige Lösung zur o. g. Aufgabe?
Eher gar keine bis schlechte Lösung der Aufgabe.

Die Überprüfung soll innerhalb des Konstruktors stattfinden:
Überarbeiten Sie die Plausibilitätsprüfung in dem Konstruktor der Klasse Wein aus dem Code 1.5
dieses Studienhefts so, dass bei ungültigen Werten nicht mehr stillschweigend Standadwerte gesetzt
werden, sondern jeweils eine Ausnahme der Klasse IllegalArgumenException ausgelöst wird.
 

killermuck

Mitglied
Aber im zweiten Absatz der Aufgabe wird doch verlangt, dass die Ausnahmen in der main()-Methode behandelt werden und das würde ja dem ersten Absatz widersprechen, oder?
 

mrBrown

Super-Moderator
Mitarbeiter
Auslösen der Exception und und Behandlen der Exception passiert an unterschiedlichen Stellen (Auslösen ist throw..., Behandeln ist catch).

Aktuell löst die Exception in main() aus, und behandelst sie dafür nirgendwo. Die Aufgabe verlangt aber ein Auslösen in dem Kosntruktor und ein Behandlen in main().
 

killermuck

Mitglied
So, ich denke jetzt hab ich's endlich gelöst, ich hoffe das ist nicht zu umständlich programmiert.

Wie würdet ihr das jetzt bewerten?

Es besteht jetzt aus 3 Teilen:
Teil1 Main()
Java:
package java08d_01_05;

import javax.swing.JOptionPane;

public class Java08d_01_05 {
    public static void main(String[] args) {
        //eine neue Instanz zum Testen
        Wein flasche1 = null;
        try {
            flasche1 = new Wein(1,10);
        }
        catch (AbbruchException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
            //den Preis ausgeben
            System.out.println("Der Preis pro Flasche beträgt: " + flasche1.getPreisProFlasche());
    }
}

Teil2 class Abbruch Exception
Java:
package java08d_01_05;

public class AbbruchException extends Exception{
    //der Standardkonstruktor
    AbbruchException() {
        super();
    }
    //der Konstruktor zur Uebergabe einer Meldung
    //er ruft ueber super den Konstruktor der Basisklasse auf
    AbbruchException(String meldung) {
        super(meldung);
    }
}

Teil3 class Wein
Java:
package java08d_01_05;

public class Wein {
    public int alter;
    public double grundpreis;
    private double preisProFlasche;
    
    //der Konstruktor setzt das Alter und den Grundpreis
    public Wein(int alter, double grundpreis) throws AbbruchException {
        if (alter <= 0 | grundpreis < 10)
            throw new IllegalArgumentException("Das 'alter' darf nicht <1 sein und der 'Grundpreis' nicht <10!");
        else {
        this.alter = alter;
        this.grundpreis = grundpreis;
        }
    }   
    //die Methode berechnet den Preis pro Flasche
    public void preisBerechnen() {
        preisProFlasche = alter * grundpreis;
    }
    
    //die Methode liefert den Preis pro Flasche
    public double getPreisProFlasche() {
        preisBerechnen();
        return preisProFlasche;
    }
}
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Ja, das geht in die Richtung, wie die Aufgabe gemeint war.

Ich sehe da nur eine Abweichung von der Aufgabe, denn in der Aufgabe steht: " sondern jeweils eine Ausnahme der Klasse IllegalArgumentException ausgelöst wird."

Deine AbbruchException ist natürlich keine IllegalArgumentException.
 

killermuck

Mitglied
Vielen Dank für die Hinweise!
Ich habe jetzt die AbbruchException in Illegal ArgumentException geändert und
in der Klasse Wein() noch die If-Bedingungen folgendermaßen aufgeteilt:

if (alter <= 0)
throw new IllegalArgumentException("Das 'alter' darf nicht <1 sein!");
else if (grundpreis <= 9)
throw new IllegalArgumentException("Der 'grundpreis' darf nicht <10 sein!");

else
this.alter = alter;
this.grundpreis = grundpreis;

Ich denke das kann man so durchgehen lassen, oder? ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
T Übungsaufgabe Event Handling Java Basics - Anfänger-Themen 0
J Thread Handling Java Basics - Anfänger-Themen 9
M Exception Handling Java Basics - Anfänger-Themen 2
U Threadsafe Event-Handling Java Basics - Anfänger-Themen 2
G Frage zu Exception-Handling Java Basics - Anfänger-Themen 5
U [Problem] Handling multiple frames Java Basics - Anfänger-Themen 5
T batch handling Java Basics - Anfänger-Themen 11
C Klassen NullPointerException beim Event Handling in GUI Java Basics - Anfänger-Themen 8
S Threads Handling multiple different Threads Java Basics - Anfänger-Themen 7
X JFrame als JAR unsichtbar trotz Exception Handling Java Basics - Anfänger-Themen 5
S Schlechter Stil beim Exception Handling Java Basics - Anfänger-Themen 6
S Exception-Handling in main-Funktion? Java Basics - Anfänger-Themen 6
S Exception Handling Java Basics - Anfänger-Themen 4
M Frage zu Exception Handling Java Basics - Anfänger-Themen 10
P Handling mit 2D-Arrays Java Basics - Anfänger-Themen 9
D Exception Handling Java Basics - Anfänger-Themen 3
Z csv Dateien und ihr Handling Java Basics - Anfänger-Themen 3
D OOP Exception Handling - NullPointerException Java Basics - Anfänger-Themen 17
N paint methode statt Event-Handling-Methode Java Basics - Anfänger-Themen 3
B Applet: Event-Handling-Methode in start- bzw. paint-Methode Java Basics - Anfänger-Themen 7
B jTextField handling in Berechnungsprogramm Diskussion Java Basics - Anfänger-Themen 4
M Exception handling Java Basics - Anfänger-Themen 5
J Event-Handling geht nicht Java Basics - Anfänger-Themen 6
T Exception-Handling beim Lesen einer XML-Datei mit XMLDecoder Java Basics - Anfänger-Themen 4
G Exception-Handling Java Basics - Anfänger-Themen 6
L Thread-Handling & Standard-Ausgabe verschönern Java Basics - Anfänger-Themen 7
D Thread Handling Java Basics - Anfänger-Themen 10
B Exception Handling in der ActionPerformed-Methode Java Basics - Anfänger-Themen 7
G start-oder paint-Methode anstatt Event-Handling-Methode? Java Basics - Anfänger-Themen 3
G GUI Event Handling Java Basics - Anfänger-Themen 5
T Exception Handling? Java Basics - Anfänger-Themen 6
N File-Handling Java Basics - Anfänger-Themen 4
A Exception Handling Fragen Java Basics - Anfänger-Themen 2
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben