Heim > Java > javaLernprogramm > Wie kann ich geprüfte Ausnahmen behandeln, wenn ich Lambda-Ausdrücke in Java 8 verwende?

Wie kann ich geprüfte Ausnahmen behandeln, wenn ich Lambda-Ausdrücke in Java 8 verwende?

Susan Sarandon
Freigeben: 2024-12-27 20:06:14
Original
937 Leute haben es durchsucht

How Can I Handle Checked Exceptions When Using Lambda Expressions in Java 8?

Ausnahmen in Lambda-Funktionen in Java 8 integrieren

In Java 8 bieten Lambda-Ausdrücke eine prägnante Möglichkeit, Methodenreferenzen darzustellen. Wenn Sie jedoch auf Methoden stoßen, die möglicherweise geprüfte Ausnahmen auslösen, reicht die Standard-Lambda-Syntax nicht mehr aus.

Die Herausforderung von Ausnahmen mit Lambda-Funktionen

Betrachten Sie die folgende Methode:

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

Erstellen einer Lambda-Referenz auf diese Methode mithilfe der Syntax Function schlägt fehl, weil das Lambda die potenziell geprüfte Ausnahme nicht berücksichtigt.

Behandeln von Ausnahmen in Lambda-Funktionen

Um dieses Problem zu lösen, stehen mehrere Ansätze zur Verfügung:

1. Definieren Sie eine benutzerdefinierte funktionale Schnittstelle:

Wenn die Methode unter Ihrer Kontrolle steht, wird die Definition einer benutzerdefinierten funktionalen Schnittstelle empfohlen, die die überprüfte Ausnahme deklariert:

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

Diese Schnittstelle kann dann sein als Lambda-Typ verwendet:

void foo (CheckedFunction<String, Integer> f) { ... }
Nach dem Login kopieren

2. Umschließen der ursprünglichen Methode:

Wenn eine Änderung der ursprünglichen Methode nicht möglich ist, können Sie sie mit einer neuen Methode umschließen, die keine geprüfte Ausnahme auslöst:

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

Die umschlossene Die Methode kann dann durch ein Lambda referenziert werden:

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

3. Behandlung von Ausnahmen innerhalb des Lambda:

Alternativ können Sie die Ausnahme innerhalb des Lambda selbst behandeln:

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 behandeln, wenn ich Lambda-Ausdrücke in Java 8 verwende?. 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