Warum funktioniert eine return-Anweisung in einem try catch mit "throws"?

8

funktioniert nicht (Kompilierungsfehler: fehlende return-Anweisung)

%Vor%

funktioniert:

%Vor%

warum?

    
Omnipresent 06.11.2009, 02:53
quelle

3 Antworten

13

Im ersten Fall gibt die Methode nach dem catch-Block oder innerhalb des catch-Blocks nichts zurück.

Im zweiten Fall gibt der catch-Block eine Ausnahme aus, daher weiß der Compiler, dass die Methode ein Objekt zurückgibt oder eine Ausnahme auslöst.

    
Bhushan Bhangale 06.11.2009, 02:57
quelle
1

Im ersten Fall, wenn die Ausnahme ausgelöst wird, gibt es keinen Rückgabewert, der Funktion fällt nur vom Ende, was ein Fehler ist, gleich wie:

%Vor%

In der Sekunde wird die Funktion garantiert einen Wert zurückgeben oder eine Ausnahme auslösen

Wenn Sie nur die Ausnahme protokollieren möchten, aber keine andere Aktion ausführen möchten Wie im ersten Beispiel könnten Sie etwas schreiben wie:

%Vor%     
zimbu668 06.11.2009 03:08
quelle
1

Wie Bhushan bereits erwähnt hat, kann der Compiler in diesem Fall sehen, dass immer etwas passieren wird, dass es eine Rückgabe oder eine Ausnahme geben wird. Wenn Sie im ersten Fall eine Benennungsausnahme erhalten, die sich in einem mehrdeutigen Status befindet, gibt nichts von einer Funktion zurück, die vertraglich eine Rückgabe benötigt.

    
Matt 06.11.2009 03:10
quelle

Tags und Links