throws Klausel

Status
Nicht offen für weitere Antworten.
D

dt2158

Gast
Die throws-Klausel im Interface
Code:
interface Inter {

   public void methode() throws BoeseException;

}

ist
Antwort:


a. erforderlich, sonst darf die Implementierung von methode() keine Ausnehme auswerfen.
b. korrekt: Die throws-Klausel gehört zur Methodensignatur
c. unzulässig: throws gehört nur zur Implemeniterung, nicht in die Spezifikation.

Was ist richtig???

Ich schwanke zwischen b oder c, weil laut dem mir vorliegenden widersprüchlichen Skript, gilt das "Die throws-Klausel gehört zur Signatur" also b; gleichzeitig dacht ich das ein interface eine "Spezifikation" ist und keine Implementierung und daher c auch richtig wär???

Und - nur eins kann richtig sein!!!
 

Sky

Top Contributor
Zu c) Wenn die throws-Klausel nicht im Interface defeniert wird, so kann sie auch in der implementierten Klasse nicht definiert werden (-> Compiler-Fehler)
 
S

stev.glasow

Gast
Wenn nur eine Antwort zulässig ist a, sonst a und b, da a b einschließt, würde ich sagen. Aber a ist auf jeden Fall richtig, die Implementierung darf nur Exceptions werfen, die auch im Interface angegeben sind oder von diesen erben.
 

Sky

Top Contributor
stevg hat gesagt.:
Wenn nur eine Antwort zulässig ist a, sonst a und b, da a b einschließt, würde ich sagen. Aber a ist auf jeden Fall richtig, die Implementierung darf nur Exceptions werfen, die auch im Interface angegeben sind oder von diesen erben.
... es sein denn die Exception ist von RuntimeException abgeleitet. Diese darf auch ohne throws-Klausel geworfen werden. Also tendiere ich eher zu b.
 
S

stev.glasow

Gast
Stimmt, dann bleibt nur b übrig. Aber irgendwie ist die Antwort trotzdem komisch oder nicht?
 

Illuvatar

Top Contributor
Ich würd auch b sagen. Korrekt ist sie auf jeden Fall. Unzulässig ist sie nicht und erforderlich auch nicht, man kann sie ja weglassen.
 

Bleiglanz

Gesperrter Benutzer
a. erforderlich, sonst darf die Implementierung von methode() keine Ausnehme auswerfen.

bullshit-frage, das hängt davon ab, ob die Exception checked ist oder nicht

b. korrekt: Die throws-Klausel gehört zur Methodensignatur

das ist richtig, aber warum soll die "throws klausel korrekt" sein, weil sie zufällig "zur signatur gehört"? Gemeint ist wohl, dass man im Interface die geworfenen (checked) Exceptions schon deklarieren muss...

c. unzulässig: throws gehört nur zur Implemeniterung, nicht in die Spezifikation.

die ist offensichtlich falsch

also bleibt nur b, weil a unsinnig ist und c falsch
 
S

stev.glasow

Gast
Ich wette nen 5ter dass das ne Frage aus der Suns Java Programmer Prüfung ist, da fragen die öfter so doof.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben