1
resposta

Tratamento para quando não for selecionada nenhuma conta

Acrescentei ao meu código uma verificação para quando o cliente não escolher uma conta, gostaria de saber se a maneira como fiz é a mais correta ou se existe(m) outra(s) soluções mais corretas.

 private void button2_Click(object sender, EventArgs e)
        {
            string textoValorSaque = valorOperacao.Text;

            double valorSaque = Convert.ToDouble(textoValorSaque);

            if (comboContas.SelectedIndex != -1)
            {
                try
                {
                    //double valorSaque = Convert.ToDouble(textoValorSaque);
                    this.contaCorrente.Saca(valorSaque);
                    MessageBox.Show("Dinheiro Liberado");
                }
                catch (FormatException ex)
                {
                    MessageBox.Show("Valor de saque '" + textoValorSaque + "' não é válido!");
                }
                catch (SaldoInsuficienteException exeption)
                {

                    MessageBox.Show("Saldo Insuficiente");
                }
                catch (ArgumentException exception)
                {
                    MessageBox.Show("Valor inválido para o saque");
                }

                Conta contaSelecionada = this.BuscaContaSelecionada();
                //contaSelecionada.Saca(valorSaque);

                this.MostraConta(contaSelecionada);
            }
            else
            {
                MessageBox.Show("Favor selecionar uma conta");
            }


        }
1 resposta

Olá, João. Tudo bom?

Note que o código principal está dentro do IF. Note também que a condinação de abandonar este método sem realizar nenhuma ação é quando comboContas.SelectedIndex == -1.

Uma boa prática de programação é manter no começo do código as condições para abandonar o método e só depois escrever a parte principal do código.

Outra coisa que percebi é que você faz a chamada Convert.ToDouble fora do try. Então seu bloco catch para FormatException nunca será executado.

Com estas modificações, seu código fica:

private void button2_Click(object sender, EventArgs e)
{
    string textoValorSaque = valorOperacao.Text;

    if (comboContas.SelectedIndex == -1)
    {
        MessageBox.Show("Favor selecionar uma conta");
        return;
    }

    try
    {
        double valorSaque = Convert.ToDouble(textoValorSaque);
        this.contaCorrente.Saca(valorSaque);
        MessageBox.Show("Dinheiro Liberado");
    }
    catch (FormatException ex)
    {
        MessageBox.Show("Valor de saque '" + textoValorSaque + "' não é válido!");
    }
    catch (SaldoInsuficienteException exeption)
    {
        MessageBox.Show("Saldo Insuficiente");
    }
    catch (ArgumentException exception)
    {
        MessageBox.Show("Valor inválido para o saque");
    }

    Conta contaSelecionada = this.BuscaContaSelecionada();
    //contaSelecionada.Saca(valorSaque);

    this.MostraConta(contaSelecionada);
}