Java 8: Lambda-Streams, Filtrowanie według metody z wyjątkiem

Mam problem z wypróbowaniem wyrażeń Lambda Java 8. Zazwyczaj działa dobrze, ale teraz mam metody, które rzucająIOExceptionjest. Najlepiej jest spojrzeć na następujący kod:

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

Problem polega na tym, że nie kompiluje się, ponieważ muszę wychwycić możliwe wyjątki metod isActive- i getNumber-Methods. Ale nawet jeśli jawnie użyję try-catch-Block, jak poniżej, nadal się nie kompiluje, ponieważ nie łapię wyjątku. Więc albo jest błąd w JDK, albo nie wiem jak złapać te Wyjątki.

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){
        }
    }
    ....
}

Jak mogę to zrobić? Czy ktoś może wskazać mi właściwe rozwiązanie?

questionAnswers(13)

yourAnswerToTheQuestion