Ausnahmen und Fehler

torsch2711 hat gesagt.:
also du musst try und catch um deine funktionen legen welche die Exceptions werfen.

Sprich du hast bei deinem Fahrzeug-konstruktor eine exception geworfen also:

try {
Fahrzeug bmw=new Fahrzeug(start);
}
catch (FalscherWertException fwe) {
system.out.println("Es wurde ein falscher geschwindigkeitswert übergeben! Exception Message: "+fwe);
}

oder bei setGeschschwindigkeit():

try {
bmw.setGeschwindigkeit(30);
}
catch (NichtMoeglichException nme) {
//s.o.
....
}


somit hast du die exceptions abgefangen.

Du kannst auch das try ganz vorne hin schreiben und zum schluss die catch bedingungen hintereinander:

try{




}
catch(FalscherWertException fwe) {
...
}
catch(NichtMoeglichException nme) {

...

}


Gruss,

Torsten

also gut, über sinn und zweck dieser aufgabe kann man sich ja streiten. Ich persönlich verstehe sowieso nicht so ganz warum es ausnahmen und fehler etxra irgendwo behandelt werden, dies kann man mit einer Bearbeitung des Quellcode doch viel eleganter lösen. Das ist zumindest meine Meinung. Zurück aber zu diesem Thema. Was du da geschrieben hast, muss dann wohl nicht in die Klasse FahrzeugTester, sondern direkt in die Klasse, wo ich es geworfen haben, also in Fahrzeug. Richtig?
 
Thomas Darimont hat gesagt.:
Hallo!


*Hust*, java.text.ParseException *g*

Gruß Tom

Mann lese meinen Text:

ParserException die sich sinnvoll verhält dann ist das was anderes.

;-)

Die java.text.ParseException geht mir in meinem jetzigen Projekt nicht weit genug :) Hier ist es so das mein Parser mit bestimmten Attributen arbeitet, und dieses ParserAttributes Object muss die Exception beeinhalten. So brauche ich eine spezielle ParseException der ich beim throw dieses Object übergeben kann. Das heisst meine ParserException verhält sich für ihr Anwendungsgebiet sinnvoll.
Würde ich dies nicht benötigen, könnte ich dir recht geben, aber so ... ;)
 
morphi79 hat gesagt.:
also gut, über sinn und zweck dieser aufgabe kann man sich ja streiten. Ich persönlich verstehe sowieso nicht so ganz warum es ausnahmen und fehler etxra irgendwo behandelt werden, dies kann man mit einer Bearbeitung des Quellcode doch viel eleganter lösen. Das ist zumindest meine Meinung. Zurück aber zu diesem Thema. Was du da geschrieben hast, muss dann wohl nicht in die Klasse FahrzeugTester, sondern direkt in die Klasse, wo ich es geworfen haben, also in Fahrzeug. Richtig?
Nein das muss schon in die Klasse FahrzeugTester. Zu Exceptions: Das ist schon eine ganz schöne Sache so vor allem wenn man mit einer Schichtenarchitektur arbeitet kann man sehr schön die Fehler vom Fachkonzept zur Gui zum Beispiel durchreichen und dort dann eine entsprechende Fehlermeldung ausgeben. Was mit einer einfachen Fehlerbearbeitung im Quellcode nicht so elegant machen kann.
Gruß Steff
 
ok also hier mal ein kleines Beispiel:
Code:
public class FahrzeugTester {
	private static void test(int start) {
        int[] aenderungen = { 30, 50, -90, 30, -80 };

//Achtung hier etwas geändert
        try {
            Fahrzeug wagen = new Fahrzeug(start);
        } catch (FalscherWertException fwe) {
             // Hier kannst du jetzt auf den Fehler reagieren zum Beispeil:
            System.out.println("Es wurde eine negative Geschwindigkeit eingeben");
            // Du kannst auch die Fehlermessage ausgeben lassen sollte aber nur für Debug zwecke genutzt werden
            System.err.println(nme);
        }
//bis hier
        for (int i = 0; i < aenderungen.length; i++) {
	    System.out.println("Ändern der Geschwindigkeit um"+aenderungen[i]);
// Achtung hier etwas geändert
            try {
                wagen.beschleunigen(aenderungen[i]);
            } catch (FalscherWertException fwe) {
                s.o.
            }
// bis hier
            System.out.println("Aktuelle Geschwindigkeit: "  + wagen.getGeschwindigkeit());
        }
}
	
public static void main(String[] args) {
  int[] startwerte = { 0, 10, -20, 200 };
 
  for (int i = 0; i < startwerte.length; i++) {
	 System.out.println("Beginn des Tests mit Startgeschwindigkeit "
		  + startwerte[i]);
	 test(startwerte[i]);
	 System.out.println("Test mit Startgeschwindigkeit "
		  + startwerte[i] + " beendet.");
  }
}
}

So müsste dann etwa diese Klasse aussehen. Noch eine Sache ich würde nicht all zu viel in der main Methode machen ich schreib sowas immer in ne extra Methode (start() oder wie auch immer) und ruf die dann nur in der main Methode auf ist aber eigentlich glaub ich mehr ne Designfrage und kann man im prinzip machen wie man will.

Gruß Steff
 
Hmmm, der korrektheit wegen würde ich aber das letzte

System.out.println("Aktuelle Geschwindigkeit: ".....);

noch in die try anweisung mit reinnehmen, da auch bei einer exception dies mitausgegeben wird.

Einfach der schönheit wegen.

Gruss,
Torsten
 
mhh... irgendwie hab ichs mit diesem Kapitel Ausnahmen nicht.... finde den Fehler nicht...


Code:
public class FahrzeugTester {
 private static void test(int start) {
		int[] aenderungen = { 30, 50, -90, 30, -80 };
//Achtung hier etwas geändert
		try {
			Fahrzeug wagen = new Fahrzeug(start);
		} catch (FalscherWertException fwe) {
			 // Hier kannst du jetzt auf den Fehler reagieren zum Beispeil:
			System.out.println("Es wurde eine negative Geschwindigkeit eingeben");
			// Du kannst auch die Fehlermessage ausgeben lassen sollte aber nur für Debug zwecke genutzt werden
			System.err.println(nme);
		}
//bis hier
		for (int i = 0; i < aenderungen.length; i++) {
	 System.out.println("Ändern der Geschwindigkeit um"+aenderungen[i]);
// Achtung hier etwas geändert
			try {
				wagen.beschleunigen(aenderungen[i]);
			} catch (FalscherWertException fwe) {
			   // Hier kannst du jetzt auf den Fehler reagieren zum Beispeil:
			System.out.println("Es wurde eine negative Geschwindigkeit eingeben");
			// Du kannst auch die Fehlermessage ausgeben lassen sollte aber nur für Debug zwecke genutzt werden
			System.err.println(nme);
			}
// bis hier
			System.out.println("Aktuelle Geschwindigkeit: "  + wagen.getGeschwindigkeit());
		}
}
 
public static void main(String[] args) {
  int[] startwerte = { 0, 10, -20, 200 };
 
  for (int i = 0; i < startwerte.length; i++) {
  System.out.println("Beginn des Tests mit Startgeschwindigkeit "
	+ startwerte[i]);
  test(startwerte[i]);
  System.out.println("Test mit Startgeschwindigkeit "
	+ startwerte[i] + " beendet.");
  }
}
}
Code:
FahrzeugTester.java:12: cannot resolve symbol
symbol  : variable nme
location: class FahrzeugTester
            System.err.println(nme);
                               ^
FahrzeugTester.java:19: cannot resolve symbol
symbol  : variable wagen
location: class FahrzeugTester
                wagen.beschleunigen(aenderungen[i]);
                ^
FahrzeugTester.java:24: cannot resolve symbol
symbol  : variable nme
location: class FahrzeugTester
            System.err.println(nme);
                               ^
FahrzeugTester.java:27: cannot resolve symbol
symbol  : variable wagen
location: class FahrzeugTester
            System.out.println("Aktuelle Geschwindigkeit: "  + wagen.getGeschwin
digkeit());

4 errors
 
Hallo,

die Fehler in Zeile 12 und 24 liegen an der Variablen-Bezeichnung deiner Exception
Code:
} catch (FalscherWertException fwe) {
Code:
System.err.println(nme);
Da du hier die Exception ausgeben willst, solltest du auch die Variable benutzen.
Code:
System.err.println(fwe);
 
Bernd1984 hat gesagt.:
Hallo,

die Fehler in Zeile 12 und 24 liegen an der Variablen-Bezeichnung deiner Exception
Code:
} catch (FalscherWertException fwe) {
Code:
System.err.println(nme);
Da du hier die Exception ausgeben willst, solltest du auch die Variable benutzen.
Code:
System.err.println(fwe);

ok... klar... sonst läuft es ins leere...

die anderen zwei fehler? muss ich erst die Variablen deklarieren?
 

Neue Beiträge

Zurück