Heim  >  Artikel  >  Java  >  So verwenden Sie die Funktionen whenComplete und Exceptional von CompletableFuture für die Ausnahmebehandlung in Java

So verwenden Sie die Funktionen whenComplete und Exceptional von CompletableFuture für die Ausnahmebehandlung in Java

王林
王林Original
2023-06-26 15:00:172424Durchsuche

In der asynchronen Java-Programmierung ist CompletableFuture eine sehr nützliche Klasse. Sie kann uns dabei helfen, Rückrufe durchzuführen, nachdem der asynchrone Vorgang abgeschlossen ist, und verfügt über einen guten Ausnahmebehandlungsmechanismus. In diesem Artikel wird erläutert, wie Sie die Funktionen whenComplete und Exceptional von CompletableFuture für die Ausnahmebehandlung verwenden.

  1. Die whenComplete-Funktion von CompletableFuture

Die whenComplete-Funktion von CompletableFuture ist eine Rückruffunktion, die aufgerufen wird, wenn der asynchrone Vorgang abgeschlossen ist. Wenn der asynchrone Vorgang normal abgeschlossen wird und der erste Parameter von Complete das Ergebnis des asynchronen Vorgangs ist, können wir das Ergebnis in der Rückruffunktion bearbeiten. Wenn ein asynchroner Vorgang fehlschlägt, wird die Ausnahme als zweiter Parameter von whenComplete an die Rückruffunktion übergeben.

Beispielcode:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    return "hello world";
});
future.whenComplete((result, throwable) -> {
    if (throwable == null) {
        System.out.println("result: " + result);
    } else {
        System.out.println("exception: " + throwable.getMessage());
    }
});

Im obigen Code erstellen wir zunächst eine CompletableFuture-Instanz und verwenden die SupplyAsync-Methode, um eine Aufgabe asynchron auszuführen, die eine Zeichenfolge „Hallo Welt“ zurückgibt. Wir verwenden die Funktion whenComplete als Rückruffunktion, um den asynchronen Vorgang nach Abschluss zu verarbeiten. Wenn der asynchrone Vorgang normal abgeschlossen wird, drucken wir das Ergebnis aus. Wenn der asynchrone Vorgang fehlschlägt, drucken wir die Ausnahmeinformationen aus.

  1. Die Ausnahmefunktion von CompletableFuture

Die Ausnahmefunktion von CompletableFuture ist ebenfalls eine Rückruffunktion, wird jedoch nur aufgerufen, wenn im asynchronen Vorgang eine Ausnahme auftritt. Sein Rückgabewert ist eine neue CompletableFuture-Instanz zur Behandlung von Ausnahmesituationen. Wir können Ausnahmen in der Ausnahmefunktion behandeln und einen Standardwert oder einen anderen Wert zurückgeben.

Beispielcode:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    throw new RuntimeException("exception occurred");
});
CompletableFuture<String> result = future.exceptionally(throwable -> {
    return "default value";
});
result.whenComplete((value, throwable) -> {
    if (throwable == null) {
        System.out.println("result: " + value);
    } else {
        System.out.println("exception: " + throwable.getMessage());
    }
});

Im obigen Code verwenden wir die Methode „supplyAsync“, um eine Aufgabe auszuführen, die eine Ausnahme auslöst. Wir verwenden die Ausnahmefunktion, um Ausnahmen zu behandeln, und ihr Rückgabewert ist eine neue CompletableFuture-Instanz. In der Callback-Funktion können wir die Ergebnisse verarbeiten. Wenn die Ausnahme nicht abgefangen wird, drucken wir die Ausnahmeinformationen aus. Wenn die Ausnahme abgefangen und behandelt wird, drucken wir den zurückgegebenen Standardwert aus.

Zusammenfassung

In diesem Artikel wird erläutert, wie die Funktionen whenComplete und Exceptional von CompletableFuture für die Ausnahmebehandlung verwendet werden. Die Verwendung der asynchronen Rückruffunktion und des Ausnahmebehandlungsmechanismus von CompletableFuture kann die Effizienz und Zuverlässigkeit der asynchronen Programmierung von Java erheblich verbessern.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktionen whenComplete und Exceptional von CompletableFuture für die Ausnahmebehandlung in Java. 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