funktioniert nicht (Kompilierungsfehler: fehlende return-Anweisung)
%Vor%funktioniert:
%Vor%warum?
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.
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%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.