Heim > Java > javaLernprogramm > Wie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um?

Wie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um?

DDD
Freigeben: 2024-12-30 11:10:09
Original
577 Leute haben es durchsucht

How to Handle Checked Exceptions in Java 8 Lambda Expressions?

Lambda-Funktionen mit Ausnahmen in Java 8

In Java 8 können Lambda-Funktionen verwendet werden, um Methoden mit bestimmten Signaturen zu referenzieren. Wenn die referenzierte Methode jedoch eine geprüfte Ausnahme deklariert, kann die Definition der Lambda-Referenz eine Herausforderung sein.

Problem

Betrachten Sie die folgende Methode, die einen String als Argument verwendet und Gibt eine Ganzzahl zurück, kann jedoch eine IOException auslösen:

Integer myMethod(String s) throws IOException
Nach dem Login kopieren

Wie definieren wir eine Lambda-Referenz darauf? Methode?

Lösung

Es gibt zwei Hauptansätze für die Behandlung von Ausnahmen in Lambda-Referenzen:

1. Benutzerdefinierte funktionale Schnittstelle

Wenn Sie die Kontrolle über den Code haben, können Sie eine benutzerdefinierte funktionale Schnittstelle definieren, die die geprüfte Ausnahme deklariert:

@FunctionalInterface
public interface CheckedFunction<T, R> {
   R apply(T t) throws IOException;
}
Nach dem Login kopieren

Dadurch können Sie Verweise auf Methoden erstellen die geprüfte Ausnahmen auslösen:

void foo (CheckedFunction f) { ... }
Nach dem Login kopieren

2. Einschließen einer nicht geprüften Methode

Wenn das Ändern der Methodensignatur keine Option ist, können Sie die geprüfte Methode 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);
    }
}
Nach dem Login kopieren

Sie können dann auf die umschlossene Methode verweisen:

Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage