Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Äquivalenz
folgende Frage
Die folgenden zwei Code-Zeilen verhalten sich in einem Java-Programm immer aquivalent und
sind daher austauschbar:
assert (x > 4711) : “Expected 0.815”;
if(x > 4711) throw new java.lang.AssertionError(“Expected 0.815”);
in der Lösung steht, das sie äquivalent wären wenn assert(x < 4711) wäre… nunmeine Frage: sind die niche generell Nicht Äquivalent, da assertions ja deaktivierbar sind???
Richtig, assert und throw new können eigentlich nie äquivalent sein, da Assertions ja nur geprüft werden, wenn diese auch aktiviert sind. throw new wirft aber immer eine Exception, auch wenn Assertions nicht aktiv sind.
Selbst wenn Assertions aktiv wären, wären die beiden Zeilen nicht äquivalent, da assert den Fehler wirft, wenn (x > 4711) nicht zutrifft, throw new aber wenn (x > 4711) zutrifft. Es müsste also mindestens (x <= 4711) als Bedingung beim assert stehen, damit die beiden Zeilen halbwegs äquivalent wären.
Ja meine frage wäre ja das auch wenn da
assert (x < 4711) : “Expected 0.815”;
if(x > 4711) throw new java.lang.AssertionError(“Expected 0.815”);
stehen würde diese zeilen sich nicht äquivalent verhalten, da assertions ja deaktivierbar sind und somit nicht immer durchlaufen, if() dagegen schon… aber das ist halt die frage ob diese begründung gement ist oder ob der Prof bei dieser frage meint, davona usgehend das assertions eingeschaltet sind…
Ohne jetzt auf deine eigentliche Frage einzugehen möchte ich einmal auf das nochmalige lesen des vorherigen Posts hinweisen.
-.- “halbwegs äquvalent” in der klausur steht “wahr” oder “falsch” und nicht, “halbwegs wahr”, “halbwegs falsch”. manchmal wären einfach eindeutige aussagen nett… es gibt einfach dinge da kann man es halten wie ein Dachdecker und deshalb kommt es manchmal nicht darauf an was sein könnte sondern was derjenige der die Klausur gemacht hat, hören will…
In der Klausur ist auf jeden Fall “falsch” richtig, da ja schon die Bedingungen alleine nicht überein stimmen.
Ich kann lediglich nicht sicher sagen, was aus Lehrstuhl-Sicht richtig gewesen wäre, wenn die Bedingungen äquivalent gewesen wären. Ich gehe aber auch hier stark von “falsch” aus, da eben Assertions aktivierbar sind.
ah ok danke.