Java 8: Lambda-Streams, Filter nach Methode mit Ausnahme

Ich habe ein Problem beim Ausprobieren der Lambda-Ausdrücke von Java 8. Normalerweise funktioniert es gut, aber jetzt habe ich Methoden, die werfenIOException's. Am besten siehst du dir den folgenden Code an:

class Bank{
    ....
    public Set<String> getActiveAccountNumbers() throws IOException {
        Stream<Account> s =  accounts.values().stream();
        s = s.filter(a -> a.isActive());
        Stream<String> ss = s.map(a -> a.getNumber());
        return ss.collect(Collectors.toSet());
    }
    ....
}

interface Account{
    ....
    boolean isActive() throws IOException;
    String getNumber() throws IOException;
    ....
}

Das Problem ist, dass es nicht kompiliert wird, da ich die möglichen Ausnahmen der isActive- und der getNumber-Methode abfangen muss. Aber selbst wenn ich einen Try-Catch-Block wie unten explizit verwende, wird er immer noch nicht kompiliert, weil ich die Exception nicht abfange. Entweder gibt es einen Fehler in JDK, oder ich weiß nicht, wie ich diese Ausnahmen abfangen soll.

class Bank{
    ....
    //Doesn't compile either
    public Set<String> getActiveAccountNumbers() throws IOException {
        try{
            Stream<Account> s =  accounts.values().stream();
            s = s.filter(a -> a.isActive());
            Stream<String> ss = s.map(a -> a.getNumber());
            return ss.collect(Collectors.toSet());
        }catch(IOException ex){
        }
    }
    ....
}

Wie kann ich es zum Laufen bringen? Kann mir jemand die richtige Lösung nennen?

Antworten auf die Frage(13)

Ihre Antwort auf die Frage