Ausnahmen und Fehler

Thomas Darimont hat gesagt.:
Hallo!

Bei den "schicken" Java Klassen erkennt man die Funktionalität schon meißt am Namen. Die IllegalArgumentException hat folgende Beschreibung in der Java Doc:


Gruß Tom

Dann scheint das das zu sein, was ich brauche, oder?

Kann ich diese Exception nun einfach ansprechen oder muss ich diese irgendwo erben. Ich hab zwar ein Kapitel über Ausnahmen, aber das peil ich nicht.
 
Hallo!

Entsprechend dem Beispiel von Steff:
Code:
if(geschwindigkeit < 0){
	throw new IllegalArgumentException("Negative Geschwindigkeit"); //oder sonst ein Fehlertext
}

Gruß Tom
 
ähhmm.... ich bin glaub ich zu dumm dafür....


nochmal kurz klartext. ich habe eine Klasse Fahrzeug

Code:
public class Fahrzeug {
	private int geschwindigkeit;
	
	public Fahrzeug(int geschwindigkeit) {
 this.geschwindigkeit = geschwindigkeit;
	}
	
	public int getGeschwindigkeit() {
 return geschwindigkeit;
	}
	
	// negative Beschleunigungen verringern die Geschwindigkeit
	public void beschleunigen(int aenderung) {
 geschwindigkeit += aenderung;
	}
}
Nun soll die Klasse Fahrzeug so geändert werden, dass ein Fahrzeug keine negativen Geschwindigkeiten haben kann. Bei dem Versuch, ein Fahrzeug mit einer negativen Anfangsgeschwindigkeit zu erzeugen, soll der Konstruktor eine Ausnahme vom Typ FalscherWertException auslösen.
Dazu soll bei dem Versuch, die Geschwindigkeit eines Fahrzeugs nachträglich auf einen Wert kleiner Null zu verringern, soll die Methode beschleunigen() eine Ausnahme vom Typ NichtMoeglichException auslösen.

Definieren Sie dazu die benötigten Ausnahmen und nehmen Sie die
nötigen Ergänzungen an der Klasse Fahrzeug vor. (Die Ausnahmen müssen keine

eigenen Variablen oder Methoden enthalten.)

Hinweise: Definieren Sie die Ausnahmen in eigenen Dateien. Geben Sie beim

Übersetzen des Programms alle zugehörigen Quelltextdateien gleichzeitig als

Argumente des Compiler-Aufrufs an.



Also ist das mit der vorgegebenen Methode ja nicht das, was eigentlich gemeint ist. Oder? Wenn ja, sorry, dann hab ich das falsch verstanden. Also muss ich dann wahrscheinlich doch wieder dahin zurück, mir eigene Ausnahmen zu bauen. Und eben da scheitert es schon.

Die Ausnahme sollte zuerst in einer seperaten Klasse definiert werden, oder?

Das wäre dann so etwa in der Art

Code:
public class FalscherWertException extends Exception{
int geschwindigkeit;
public void meineFunktion()throws FalscherWertException
{if(geschwindigkeit < 0){
 throw new FalscherWertException
   ("Negative Geschwindigkeit"); //oder sonst ein Fehlertext
}}}

oder ist das schon inkorrekt?
 
Hallo!

Code:
public void beschleunigen(int aenderung) {
	int vNew = this.geschwindigkeit + aenderung;
        if(vNew < 0){
            throw new IllegalArgumentException("...blablabla");
        }
	geschwindigkeit = vNew;
}

Gruß Tom
 
Thomas Darimont hat gesagt.:
Hallo!

Code:
public void beschleunigen(int aenderung) {
	int vNew = this.geschwindigkeit + aenderung;
if(vNew < 0){
throw new IllegalArgumentException("...blablabla");
}
	geschwindigkeit = vNew;
}

Gruß Tom

mh... die Ausnahme hätte dann aber den Teil der Aufgabe nicht erfüllt, da der Typ FalscherWertException gar nicht angesprochen worden ist, oder sehe ich das nicht richtg?
Bei dem Versuch, ein Fahrzeug mit einer negativen Anfangsgeschwindigkeit zu erzeugen, soll der Konstruktor eine Ausnahme vom Typ FalscherWertException auslösen.
 
Dann musst du doch die eigene Exception benutzen und nicht die IllegalArgumentException. Wenn das so die Aufgabenstellung ist.
Gruß Steff
 
also mach ich dann eine Klasse, die so oder so ähnlich aussieht, oder?


Code:
public class FalscherWertException extends Exception{
int geschwindigkeit;
public void meineFunktion()throws FalscherWertException
{if(geschwindigkeit < 0){
 throw new FalscherWertException
   ("Negative Geschwindigkeit"); //oder sonst ein Fehlertext
}}}
 
nicht ganz:
Die Exceptionklasse:
Code:
public class FalscherWertException extends Exception {
public FalschWertException( String ErrorMessage ){
   super(ErrorMessage);
}

public FalscherWertException(){
}
}
Die Autoklasse:
Code:
public class Car {
public Car (..., int geschwindigkeit, ...) throws FalscherWertException{
   if(geschwindigkeit < 0){
        throw new FalscherWertException("Geschwindigkeit ist negativ");
   }
...
}
}

So in etwa könnte es aussehn.
Gruß Steff
 
steff aka sId hat gesagt.:
nicht ganz:
Die Exceptionklasse:
Code:
public class FalscherWertException extends Exception {
public FalschWertException( String ErrorMessage ){
super(ErrorMessage);
}
 
public FalscherWertException(){
}
}
Die Autoklasse:
Code:
public class Car {
public Car (..., int geschwindigkeit, ...) throws FalscherWertException{
if(geschwindigkeit < 0){
throw new FalscherWertException("Geschwindigkeit ist negativ");
}
...
}
}

So in etwa könnte es aussehn.
Gruß Steff

Ok, dann muss ich in der bereits vorhandenen Klasse die Bedingung if setzen, dass etwas passieren kann und dazu den Vermerk, dass es dazu eine eigene Exception gibt und die Exception in eine eigene Datei schreiben und die Exception dementsprechend deklarieren, wenn ich das richtig verstanden habe.

Nun versuche ich mal das Beispiel weiterzumachen. Als nächstes sollte bei einem Versuch, die Geschwindigkeit eines Fahrzeugs nachträglich auf einen Wert kleiner als Null zu verringern, eine Methode beschleunigen() , welche ja in der Klasse Fahrzeug enthalten ist, eine Ausnahme vom Typ NichtMoeglichException auslösen. Dort ist es dann wieder das gleiche oder?
 
Zurück