Behandeln von Ausnahmen in Java 8 Lambda-Funktionen
Beim Erstellen von Verweisen auf Methoden mithilfe von Lambda-Ausdrücken ist es wichtig, die Behandlung von Ausnahmen zu berücksichtigen. Die Standard-Funktionsreferenztypen unterstützen keine geprüften Ausnahmen, wie etwa solche, die IOException erweitern.
Um dieses Problem zu beheben, gibt es zwei Ansätze:
1. Definieren einer benutzerdefinierten Funktionsschnittstelle
Wenn der Code unter Ihrer Kontrolle steht, können Sie eine benutzerdefinierte Funktionsschnittstelle erstellen, die die aktivierte Ausnahme explizit deklariert:
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
Verwenden Sie dann die benutzerdefinierte Schnittstelle zum Definieren Ihrer Funktionsreferenz:
void foo(CheckedFunction<String, Integer> f) { ... }
2. Einschließen der geprüften Methode
Wenn Sie keine Kontrolle über die geprüfte Methode haben, können Sie sie in eine Methode einschließen, die keine geprüfte Ausnahme deklariert:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch (IOException e) { throw new UncheckedIOException(e); } }
Mit der Mit der Wrapped-Methode können Sie die Funktionsreferenz wie folgt erstellen:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Alternativ können Sie einen Lambda-Ausdruck mit einer Ausnahmebehandlung verwenden block:
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch (IOException e) { throw new UncheckedIOException(e); } };
Durch die Verwendung dieser Techniken können Sie geprüfte Ausnahmen in Java 8-Lambda-Funktionen ordnungsgemäß behandeln und so sicherstellen, dass Ihr Code robust und ausnahmesicher bleibt.
Das obige ist der detaillierte Inhalt vonWie kann ich geprüfte Ausnahmen in Java 8 Lambda-Ausdrücken behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!