Heim > Java > javaLernprogramm > Wie kann ich geprüfte Ausnahmen in Java 8 Lambda-Funktionen behandeln?

Wie kann ich geprüfte Ausnahmen in Java 8 Lambda-Funktionen behandeln?

Barbara Streisand
Freigeben: 2024-12-20 16:54:15
Original
980 Leute haben es durchsucht

How Can I Handle Checked Exceptions in Java 8 Lambda Functions?

Lambda-Funktionen und Ausnahmebehandlung in Java 8

In Java 8 bieten Lambda-Funktionen eine prägnante Syntax zum Definieren von Funktionstypen. Beim Umgang mit Lambda-Funktionen, die möglicherweise geprüfte Ausnahmen auslösen können, tritt jedoch häufig ein Problem auf.

Betrachten Sie die folgende Lambda-Funktion, die eine IOException auslöst:

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

Versuch, einen Verweis darauf zu erstellen Methode, die die Standardfunktionsschnittstelle verwendet, führt zu einem Kompilierungsfehler. Dies liegt daran, dass die Funktionsschnittstelle keine geprüften Ausnahmen deklariert und daher nicht mit Methoden wie myMethod kompatibel ist.

Um dieses Problem zu beheben, haben wir mehrere Optionen:

  1. Definieren eine benutzerdefinierte funktionale Schnittstelle:

Wenn der Code unter Ihrer Kontrolle steht, können Sie eine benutzerdefinierte funktionale Schnittstelle definieren, die explizit deklariert geprüfte Ausnahme. Zum Beispiel:

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

Sie können dann diese benutzerdefinierte Schnittstelle verwenden, um auf myMethod zu verweisen:

void foo (CheckedFunction f) { ... }
Nach dem Login kopieren
  1. Methode umschließen:

Alternativ können Sie myMethod in eine neue Methode einbinden, die keine geprüfte Ausnahme auslöst. Zum Beispiel:

public Integer myWrappedMethod(String s) {
    try {
        return myMethod(s);
    }
    catch(IOException e) {
        throw new UncheckedIOException(e);
    }
}
Nach dem Login kopieren

Jetzt können Sie über die Funktionsschnittstelle auf diese umschlossene Methode verweisen:

Function<String, Integer> f = (String t) -> myWrappedMethod(t);
Nach dem Login kopieren
  1. Lambda-Körper, der Ausnahmen behandelt:

Als letzte Option können Sie einen Lambda-Funktionskörper definieren, der die geprüfte Ausnahme explizit behandelt. Zum Beispiel:

Function<String, Integer> f =
    (String t) -> {
        try {
           return myMethod(t);
        }
        catch(IOException e) {
            throw new UncheckedIOException(e);
        }
    };
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich geprüfte Ausnahmen in Java 8 Lambda-Funktionen behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage