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

Excepetion para caraceter invalido!

Olá! Seguindo a aula, consegui criar as Exceptions para quando o usuário colocar um valor maior que o saldo e quando ele colocar um valor negativo. Mas como podemos tratar o erro do usuário digitar algum caracter invalido para sacar ao inves de um int? Ex: colocar as letras "asd" no campo de valor !

Obrigado!

4 respostas
solução!

Bom dia, Peterson. Tudo bom?

O tratamento desta exceção deve ser feita no método button2_Click, já que é ele quem faz a conversão de string para double. O método Convert.ToDouble lança uma exceção do tipo FormatException quando não consegue fazer a conversão.

Você pode colocar o Convert.ToDouble no bloco try e adicionar um manipulador de exceção para FormatException assim:

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

    try
    {
        double valorSaque = Convert.ToDouble(textoValorSaque);
        contaAtual.Saca(valorSaque);
        MessageBox.Show("Dinheiro Liberado");
    }
    catch(FormatException e)
    {
        MessageBox.Show("Valor de saque '" + textoValorSaque + "' não é válido!");
    }
    catch (Exception e)
    {
        MessageBox.Show("Saldo insuficiente");
    }

    MostraConta(contaAtual);
}

O que você acha?

Abs.

Deu certo Guilherme! Foi sucesso! Aproveitando a oportunidade... Se eu não colocar nenhum MessageBox e deixar da seguinte forma:

catch(FormatException exception)
            {
                MessageBox.Show(exception.Message);
            }
catch (ArgumentException exception)
            {
                MessageBox.Show(exception.Message);
            }

Percebi que o C# trouxe uma mensagem padrão para a FormatException e ArgumentException Todas as "exceptions" tem uma mensagem padrão?

A maioria das exceções definidas no .NET possuem uma mensagem genérica como estas, mas, alguns tipos possuem a mensagem padrão que é algo como "Uma exceção do tipo <nome do tipo> foi lançada."

Excelente! Muito obrigado!