Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Compartilhando solução alternativa com BiConsumer

public class ManipuladorMetodo {

private BiConsumer<Method, InvocationTargetException> tratamentoExcecao;

// ..omitido

public ManipuladorMetodo comTratamentoDeExcecao(BiConsumer<Method, InvocationTargetException> tratamentoExcecao) {
    this.tratamentoExcecao = tratamentoExcecao;
    return this;
}

public Object invoca() {
    try {
        List<Object> parametros = new ArrayList<>();
        Stream.of(metodo.getParameters())
            .forEach( p -> parametros.add(params.get(p.getName())));
        return metodo.invoke(instancia, parametros.toArray());
    } catch (IllegalAccessException | IllegalArgumentException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    } catch (InvocationTargetException e) {
        if (tratamentoExcecao != null) {
            tratamentoExcecao.accept(metodo, e);
        }
        e.printStackTrace();
        throw new RuntimeException("Erro no método!", e.getTargetException());
    }
}

}

// Neste caso será utilizaso accept e não apply

if (tratamentoExcecao != null) { tratamentoExcecao.accept(metodo, e); }

1 resposta
solução!

Muito bom Marco