Heim >Java >javaLernprogramm >Wie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Funktionen um?
Lambda-Funktionen mit Ausnahmebehandlung in Java 8
Lambda-Ausdrücke ermöglichen prägnanten und eleganten Code, aber es fehlt ihnen die Unterstützung für geprüfte Ausnahmen. Diese Einschränkung stellt eine Herausforderung dar, wenn Sie mit Methoden arbeiten, die Ausnahmen auslösen.
Betrachten Sie das folgende Beispiel:
Integer myMethod(String s) throws IOException
Wie können Sie eine Lambda-Referenz auf diese Methode definieren?
Die Lösung hängt vom Szenario ab:
Definieren Sie eine benutzerdefinierte funktionale Schnittstelle mit Checked Ausnahme:
Wenn Sie die Kontrolle über den Code haben, können Sie eine benutzerdefinierte funktionale Schnittstelle erstellen, die die überprüfte Ausnahme deklariert:
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
Verwenden Sie dann diese Schnittstelle in Ihrem Code:
void foo(CheckedFunction<String, Integer> f) { ... }
Verpacken Sie die Methode in einer No-Exception Version:
Wenn Sie die Methode nicht ändern können, packen Sie sie in eine neue Methode ein, die keine geprüfte Ausnahme deklariert:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch (IOException e) { throw new UncheckedIOException(e); } }
Dann erstellen Sie die Lambda-Referenz:
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Alternativ können Sie einen in „Curly“ eingeschlossenen Lambda-Ausdruck verwenden Klammern:
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch (IOException e) { throw new UncheckedIOException(e); } };
Wenn Sie diese Techniken verstehen, können Sie geprüfte Ausnahmen effektiv behandeln, während Sie Lambda-Funktionen in Java 8 verwenden.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Funktionen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!