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
Susan SarandonOriginal
2024-12-27 20:06:14941Durchsuche

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

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;
}

Diese Schnittstelle kann dann sein als Lambda-Typ verwendet:

void foo (CheckedFunction<String, Integer> f) { ... }

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);
    }
}

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

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

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);
        }
    };

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!

Stellungnahme:
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