Sim Gabriel, da forma como você fez realmente tem um ganho de aproveitamento de código, pois não será realmente necessário repetir o try-catch quando quisermos tratar a exceção. Isso não foi feito no exercício pois o objetivo só era ensinar o uso de tratamento de exceção. O que quis dizer anteriormente foi quanto a leitura do código, que se torna um pouquinho complicada e ai cabe ao desenvolvedor escolher, aproveitar o código ou melhorar sua legibilidade, ou buscar uma outra alternativa que faça os dois.
Veja só.. com o código antigo como encontra-se no exercício:
try{
cc.deposita(-10);
} catch(ValorInvalidoException i) {
System.out.println(i.getMessage());
}
Você consegue "ler" o código. Ficaria mais ou menos assim:
"Tenta depositar -10. Em caso de exceção, pega e imprime a mensagem."
Já no seu código:
try {
if (valor < 0 ) {
throw new ValorInvalidoException(valor);
} else {
this.saldo += valor;
}
}
catch (ValorInvalidoException e) {
System.out.println("Erro pego");
}
Fica um pouco mais complicado, a leitura seria assim:
"Tenta, se o valor for menor que 0 lança exceção, senão adiciona ao saldo. Em caso de exceção pega e imprime "Erro pego". "
Ficou um pouco mais complicado de se compreender e ler o código.
Como disse anteriormente, você pode tentar fazer de outras formas e juntar tanto o ganho de aproveitamento de código quanto a legibilidade. No entanto se você achar que isso não vale a pena e que seria pouco vantajoso, você pode deixar seu código dessa forma, pois como eu disse no inicio, não está errado, só está um pouco mais complicado para ler.
Espero ter ajudado! Bons Estudos!