8.4 Rückgabewerte bei ausgelösten Ausnahmen 

Java versucht, durch den Programmfluss den Ablauf innerhalb einer Methode zu bestimmen und zu melden, ob sie definitiv einen Rückgabewert liefert. Dabei verfolgt der Compiler die Programmpfade und wertet bestimmte Ausdrücke aus. Doch die Aussage »Jede Methode mit Ergebnistyp ungleich void muss eine return-Anweisung besitzen« müssen wir etwas relativieren. Nur in einem speziellen Fall müssen wir dies nicht: Nämlich genau dann, wenn vor dem Ende der Methode eine throw-Anweisung die Abarbeitung beendet.
Listing 8.15 com/tutego/insel/exceptions/NoReturn.java
package com.tutego.insel.exception; class WindowsVistaKeyGenerator { public String generateKey() { throw new UnsupportedOperationException(); } }
Ein Blick auf generateKey() verrät, dass trotz angekündigtem Rückgabewert keine return-Anweisung im Rumpf steht. Die Abarbeitung wird vor dem Rücksprung durch eine Exception abgebrochen. generateKey() muss diese Exception nicht mit throws ankündigen, da UnsupportedOperationException eine RuntimeException ist.