Heim > Java > javaLernprogramm > Wie können Sie Streams von Objekten, die Ausnahmen auslösen, in Java 8 sicher filtern?

Wie können Sie Streams von Objekten, die Ausnahmen auslösen, in Java 8 sicher filtern?

Barbara Streisand
Freigeben: 2024-10-25 21:38:03
Original
804 Leute haben es durchsucht

How Can You Safely Filter Streams of Objects That Throw Exceptions in Java 8?

Lambda-Ausdrücke und außergewöhnliche Streams in Java 8: Methoden sicher filtern

Lambda-Ausdrücke haben die Java-Codierung revolutioniert und präzise und ausdrucksstarke funktionale Programmiertechniken ermöglicht . Beim Umgang mit Methoden, die Ausnahmen auslösen können, wie im bereitgestellten Beispiel, können bei Java 8-Stream-Vorgängen jedoch Kompilierungsprobleme auftreten.

Das Problem

Die Code-Snippet-Versuche um einen Stream von Account-Objekten basierend auf ihrer isActive()-Methode zu filtern, die eine IOException auslöst. Der Filtervorgang kann nicht kompiliert werden, da Java erfordert, dass geprüfte Ausnahmen explizit innerhalb des Streams behandelt werden.

Die Lösung

Um dieses Problem zu beheben, muss man die potenzielle Ausnahme behandeln bevor es dem Lambda-Ausdruck entgeht. Dies kann erreicht werden, indem der isActive()-Methodenaufruf in einen Try-Catch-Block innerhalb des Lambda eingeschlossen wird:

<code class="java">s = s.filter(a -> {
    try {
        return a.isActive();
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
});</code>
Nach dem Login kopieren

Durch die Konvertierung der geprüften IOException in eine UncheckedIOException kann sich die Ausnahme sicher innerhalb des Streams ausbreiten, ohne dass es dazu kommt Kompilierungsfehler.

Alternative Methoden

Alternativ kann die uncheckCall()-Methode verwendet werden, um geprüfte Ausnahmen zu behandeln, ohne auf Zwischenkonvertierungen angewiesen zu sein:

<code class="java">return s.filter(a -> uncheckCall(a::isActive))
        .map(Account::getNumber)
        .collect(toSet());</code>
Nach dem Login kopieren

Dieser Ansatz bietet eine bequeme Möglichkeit, geprüfte Ausnahmen zu behandeln und gleichzeitig die Prägnanz von Lambda-Ausdrücken beizubehalten.

Achtung

Es ist wichtig, die potenziellen Auswirkungen der Konvertierung geprüfter Ausnahmen zu berücksichtigen Ausnahmen in ungeprüfte Ausnahmen. Es vereinfacht zwar die Ausnahmebehandlung in Stream-Operationen, entfernt aber auch den direkten Hinweis auf die potenzielle Ausnahme aus der Methodensignatur. Es muss sorgfältig darüber nachgedacht werden, ob die Behandlung von Ausnahmen auf diese Weise mit dem gewünschten Verhalten übereinstimmt.

Das obige ist der detaillierte Inhalt vonWie können Sie Streams von Objekten, die Ausnahmen auslösen, in Java 8 sicher filtern?. 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