Noch eine Frage zur 11. HA

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Noch eine Frage zur 11. HA

Beitrag von marek » 2. Feb 2008 12:24

Kann mir jemand sagen, was die Gründe dafür sein könnten, dass meine flyTo-methode statt wie programmiert eine Exception zu werfen, bei illegaler Eingabe ein rotes NULL rauswirft :?:
Meine changeHeight- methode verhält sich im Übrigen genauso...

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Noch eine Frage zur 11. HA

Beitrag von Jo(h)nny » 2. Feb 2008 15:55

was meinst du denn mit illegale eingabe?? flüghafen gibts nicht oder sprit zu wenig?? ich würd ma sagen guck deine hilfsmethoden:)
und was meinst du mit rotes null?? nullpointerexception oder was??
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Noch eine Frage zur 11. HA

Beitrag von guido » 2. Feb 2008 16:36

Jo(h)nny hat geschrieben:was meinst du denn mit illegale eingabe?? flüghafen gibts nicht oder sprit zu wenig?? ich würd ma sagen guck deine hilfsmethoden:)
und was meinst du mit rotes null?? nullpointerexception oder was??
Was genau gemeint ist, weiß ich auch nicht. Ein rotes "null" kommt jedenfalls gerne auf den Bildschirm (Eclipse Console), wenn man einen Wert ausgibt, der eben "null" ist...

Guido

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von marek » 2. Feb 2008 18:16

OK, also wenn es zu wenig Sprit gibt, dann sollte eine Exception rauskommen. Da ich ja System.err. verwendet habe, kam die NULL in roter Ausführung.
Alles funktioniert prima, nur anscheinend wird irgendwo ein NullPointer erzeugt, wenn die Gleichung:
ConsumedFuel > Fuel
stimmt. Nochmal zur Veranschaulichung:

public void flyTo(String destination)
throws AirplaneException, AirborneComputerException {

int Fuel = currentPlane.getFuel();
int ConsumedFuel =
(int)currentPlane.getFConsumption() * (int)distance(currentPlane.getLocation(), destination);

//Checks whether there is enough fuel left:
if (ConsumedFuel > Fuel) {
throw new AirborneComputerException("Not enough fuel!");
}
else {
currentPlane.setFuel(Fuel - ConsumedFuel);
currentPlane.setLocation(destination);
}
}

Die restlichen Abfragen habe ich einfachheitshalber weggelassen...

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von marek » 2. Feb 2008 18:27

Ach, never mind, Jungs...
Ich hab einfach nur vergessen, die Methode getMessage() in AirborneComputerException adäquat zu überschreiben. Da hat die arme Maschine die ganze Zeit versucht, irgendwelchen Blödsinn mit einer Fehlermeldung zu machen, die ihrer Meinung nach noch nicht mal eine war... :mrgreen:

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Noch eine Frage zur 11. HA

Beitrag von Jo(h)nny » 2. Feb 2008 21:34

hmmm... also ich hab nichts mit getMessage gemacht....... funktioniert aber trotzdem:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Noch eine Frage zur 11. HA

Beitrag von Stumpf.Alex » 3. Feb 2008 11:54

marek hat geschrieben:Ach, never mind, Jungs...
Ich hab einfach nur vergessen, die Methode getMessage() in AirborneComputerException adäquat zu überschreiben. Da hat die arme Maschine die ganze Zeit versucht, irgendwelchen Blödsinn mit einer Fehlermeldung zu machen, die ihrer Meinung nach noch nicht mal eine war... :mrgreen:
Du musst das nicht überschreiben. Deine Exceptionklassen erben diese Funktionlitäten von der Klasser Exception voll mit. Du musst nur darauf achten, dass beim Konstruktor auch der richtige Superkonstruktor aufgerufen wird, mit dem du einen String abspeichern kannst.

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von marek » 3. Feb 2008 13:14

Oh, alles klar :wink:
Ich hätte dann aber noch eine Frage, und jetzt bin ich mir ziemlich sicher, dass das Problem nicht so trivial ist :roll: :

"werfen sie alle Exceptions bis in die Klasse AirborneComputer und lassen Sie diese dann auch von dort an die aufrufende Methode weiterreichen"

Was ist denn damit gemeint? Ich nehme an die Test-Klasse sollen wir nicht verändern, also ist der "Ort" der Ausnahmebehandlung wohl nicht beliebig... Bei welchen Methoden soll ich einen try-catch Block einbauen?

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von Osterlaus » 3. Feb 2008 13:20

An sich musst du nur in jeder Funktion, in der eine Exception geworfen werden kann oder eine Funktion aufgerufen wird, die eine wirft, diese nach draußen weiterreichen. Erst in der Test-Klasse sitzen die try/catch-Blöcke, und da siehst du dann auch übern Daumen, ob du das richtige wirfst.

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von marek » 3. Feb 2008 13:38

Das stimmt, aber in der Test-Klasse gibt es auch sehr viele Aufrufe außerhalb aller try-catch Blöcke.
Das heißt, die Exceptions werden an die main Methode weitergereicht. Diese kann sie aber nicht behandeln, so wie sie vorgegeben ist.
Also ich habe die main Methode folgendermaßen verändert, keine Ahnung ob dies zulässig ist:

try { ...............
}
catch (AirborneComputerException e) {
System.out.println(e.getMessage());
}
catch (AirplaneException e) {
System.out.println(e.getMessage());
}
catch (Exception e) {
System.err
.print("This wasn't supposed to happen. You should review your code."
+ e);
}

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von marek » 3. Feb 2008 13:49

Hm... aus irgendwelchem Grund hatte ich vorhin die Ausnahmeklassen von Throwable erben lassen und deshalb wurden sie nicht als Exception behandelt.... Somit hat sich mein letztes Problem mit der Hausübung auch als trivial erwiesen :wink:

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Noch eine Frage zur 11. HA

Beitrag von Osterlaus » 3. Feb 2008 14:10

Was meinst du, warum da steht "This wasn't supposed to happen. You should review your code." - du hast, wird das ausgegeben, Exceptions falsch geworfen.

Antworten

Zurück zu „Archiv“