Seite 5 von 6

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 17:42
von Stumpf.Alex
Naja, wirfst du eine Exception mit einer Message aus? Du kannst nämlich eine Exception mit String als Parameter erzeugen.
Krümelmonster hat geschrieben:Der Grund für die Schleife ist (bei mir zumindest), dass ich alle Vorkommen des Flughafens löschen will.
Achso..diese Schleife habe ich im Prinzip auch, aber in Form einer getter-Methode. Ich lasse mir das erste Vorkommen des Flughafens mit dem passenden Namen aus der Datenstruktur zurück liefern.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 18:32
von s!mon
Ich verstehe gerade etwas nicht. Bei mir enden die Tests mit:

-----Flight route test finished-----
This wasn't supposed to happen. You should review your code.flugsimulator.AirplaneException: Airport not found

Code: Alles auswählen

	private static void testdelete() throws AirportException,
			AirborneComputerException, AirplaneException {
		test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("-----Delete Test finished-----");
	}
Die AirplaneException wird hier nicht abgefangen, also springt er zurück in die Main-Methode und gibt dort den Fehler aus. Meiner Meinung nach korrekt.

1. Wieso gibt er das println nicht aus? Springt er dann quasi sofort zurück zur Main-Methode?
2. Wieso wird bei euch der letzte das -----Delete Test finished----- noch ausgegeben? Ich sehe bei mir da keinen Fehler dran..

ciao, Simon.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 19:25
von Stumpf.Alex
Ganz einfach..du gibst eine AirplaneExecption aus, erwartet wird aber laut Übung in diesem Fall eine AirborneComputerException.

Re: Übung 11 online!!!!

Verfasst: 31. Jan 2008 19:29
von s!mon
Hmm verdammt, stimmt.. aber in der Aufgabe steht doch: "Diese Methode soll auch überprüfen, ob das Flugzeug
genug Sprit für die Strecke hat; falls nicht, soll eine AirborneComputerException geworfen
werden. Sollte kein aktueller Airport eingestellt sein, so ist eine AirplaneException zu werfen."

Habe deshalb die AirplaneException geworfen. Mir ist schon klar, dass kein aktueller Airport was anderes ist als ein fehlender Airport.. trotzdem seltsam. Naja danke.

Re: Übung 11 online!!!!

Verfasst: 1. Feb 2008 12:32
von S. Oelmann
Eine Frage zur Hausübung 11 habe ich auch noch. Was passiert eigentlich, wenn beim Instanzieren eines Objektes eine Exception auftritt und bis bis zu dieser Stelle schon einige Attribute initialisiert wurden? Wird das ganze Objekt verworfen oder erhalte ich so ein Objekt, das nur zum Teil initialisiert ist? Das könnte nämlich auch zu einigen unerwünschten Fehlern führen und einen finally-Block notwendig machen.

Re: Übung 11 online!!!!

Verfasst: 1. Feb 2008 14:44
von Krümelmonster
Das Objekt wird verworfen.

Code: Alles auswählen

public class Test {
	public static void main(String[] args) {
		A a = null;

		try {
			a = new A(1, 2);
		}catch(IllegalArgumentException e) {
			
		}
		
		System.out.println(a==null); // true
	}

}

class A {
	int a;
	int b;
	
	A(int a, int b) throws IllegalArgumentException {
		this.a = a;
		this.b = b;
		throw new IllegalArgumentException();
	}
}

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 14:59
von Jo(h)nny
hmmmm.... ich hab da folgendes problem, also n airbornecomputer steht beim construktor folgendes:

Code: Alles auswählen

/**
	 * Contructor; initializes plane and airportMap
	 * 
	 * @throws AirplaneException
	 */
das heisst, wir müssen ein airplane instanzieren, ne?? unser konstruktor bekommt aber nichts...
so und weiter im code bei getAirplane steht noch:
/**
* returns the bord computer's current airplane
*
* @return the current airplane (may be null!)
*/
so, dieses may be null hab ich so verstanden, dass wir im konstruktor das flügzeug einfach null setzten sollen, nicht??
die frage ist jetzt, wieso steht da oben @throws AirplaneException??????

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 15:23
von Stumpf.Alex
noch so ein paradoxon... :( :|

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 15:40
von Jo(h)nny
@Stumpf.Alex, wie hast du das denn gemacht??? gleich null gesetzt??
und noch eine Frage:
Sollte kein aktueller Airport eingestellt sein, so ist eine AirplaneException zu werfen.
wie ist denn das mit "nicht eingestellt" gemeint??? ich kann mir das jetzt nur so vorstellen, dass man beim instanzieren des flügzeugs null, "" oder "default" für die Location eingibt :?: :?: :?:
oder einfach nur, dass man flüghafen nicht im süeicher findet???

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 15:59
von Stumpf.Alex
Jo(h)nny hat geschrieben:@Stumpf.Alex, wie hast du das denn gemacht??? gleich null gesetzt??
und noch eine Frage:
Sollte kein aktueller Airport eingestellt sein, so ist eine AirplaneException zu werfen.
wie ist denn das mit "nicht eingestellt" gemeint??? ich kann mir das jetzt nur so vorstellen, dass man beim instanzieren des flügzeugs null, "" oder "default" für die Location eingibt :?: :?: :?:
oder einfach nur, dass man flüghafen nicht im süeicher findet???
Jedes Flugzeug hat ein privates Airport Attribut. Wenn diese ungleich null ist, dann ist ein Flughafen eingestellt.

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 16:05
von Jo(h)nny
du meinst also wenn man eingibt:

Code: Alles auswählen

gnieob = new Airplane("Gnieob 747", 30000, 7000, 2.75, 400, null);
ist kein flüghafen eingestellt, sonst ist egal, also ob "" , "default" oder sonst was??

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 16:53
von Stumpf.Alex
Jo(h)nny hat geschrieben:du meinst also wenn man eingibt:

Code: Alles auswählen

gnieob = new Airplane("Gnieob 747", 30000, 7000, 2.75, 400, null);
ist kein flüghafen eingestellt, sonst ist egal, also ob "" , "default" oder sonst was??
Jop, sozusagen...aber ob man bei "" eingestellt betrachtet, ist schon wieder eine Glaubensfrage...also ich lasse keine leeren Strings als location zu, obwohl es ja nicht von der Übung verlangt wird.

EDIT: Außerdem ist ja auch nicht sichergestellt, dass der Name in der Bordcomputerdatenbank existiert. Das sollte auch geprüft werden. Denn du hast ja nur den Namen des Aufenthaltortes, aber keine Koordinaten, die du zur Berechung des Fluges brauchst.

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 17:05
von Krümelmonster
@Jo(h)nny:
Also in den Templates steht beim AirborneComputer Konstruktor nur:

Code: Alles auswählen

  /**
   * Contructor; initializes plane and airportMap
   */
  public AirborneComputer() {
    
  }
Wo du her hast, dass es eine AirplaneException werfen soll, weiß ich nicht.

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 17:23
von Jo(h)nny
@Krümelmonster, schon wieder??? das gibts ja nicht:) dann hat sich das ja geklärt
@Stumpf.Alex, die sache ist ja eigentlich, wenn das nicht im speicher ist, musst du glaub ich ne airbornecompexc werfen und wenn nichts eingestellt, ne airplaneexception, sonst wärs ja auch egal, ich hätt das mit meiner findAirport gemacht und das wärs:)

Re: Übung 11 online!!!!

Verfasst: 2. Feb 2008 17:39
von Krümelmonster
Hm, also in meiner Lösung sind "Kein Flughafen eingestellt" und "Eingestellter Flughafen nicht (mehr) im Speicher" äquivalent.
In beiden Fällen wird eine AirplaneExcpetion geworfen.