Amigos,
Qual o benefício de se tratar o erro ? Pergunto isso pois um simples if poderia informar ao usuário que o valor que ele esta depositando é incorreto. Mas como sugestão do exercício, retorno um IllegalArgumentException.
    public void deposita(double valor){
        if(valor < 0){
            throw new IllegalArgumentException();
        }else{
            this.saldo += valor;
            System.out.println("Valor depositado: " + valor);
        }
    }    public void deposita(double valor){
        if(valor < 0){
            System.out.println("Valor depositado inválido");
        }else{
            this.saldo += valor;
            System.out.println("Valor depositado: " + valor);
        }
    }Imagino que o benefício seja quando temos um sistema muito grande, bastante complexo onde a execução onera o ambiente e leva mais tempo. Desta forma, tratando o erro, você finaliza a execução do código especificando o erro. E não deixa o código correr certo ?
 
            