Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Checked exception dentro de Stream

Olá,

Estou refatorando alguns códigos para utilizar os recursos do Java 8. Eu tenho o seguinte método

private void sendCommands(char[] commands) throws InvalidPositionException {
        for (final char command : commands) {
            robot.executeCommand(command);
        }
}

O método lança uma checked exception InvalidPositionException caso a posição informada seja inválida. Estou tentando colocar esse código usando lambda mas não sei como fazer para tratar a exceção.

private void sendCommands(char[] commands) throws InvalidPositionException {
             Arrays.asList(ArrayUtils.toObject(commands)).stream().forEachOrdered(command -> {
                 robot.executeCommand(command); 
             });
}

Código acima não compila, pois diz que eu preciso tratar a InvalidPositionException.

Como faço para tratar checked exception dentro de um Stream?

Outra coisa é que não sei se vale a pena eu refatorar esse código em específico, pois notem que ficou mais verboso que o antigo e como minha lista não tende a ser muito grande não utilizarei as questões de performance do Stream.

Agradeço desde já.

2 respostas
solução!

Oi Tiago,

Até que dá sim para tratar a checked exception na expressão lambda, entretanto o código vai ficar mais verboso e confuso ainda: http://www.baeldung.com/java-lambda-exceptions

Eu não faria essa refatoração, pois o seu código com for está bem pequeno e simples.

Bons estudos!

Obrigado