4
respostas

try...catch

Ola, estava fazendo um exercicio e o exercicio pede para calcular o peso ideal, uma vez que o usuario inseriu a informacao do sexo, atraves do radiobuttton selecionado e a altura atraves do textbox Altura.

Na solucao apresentada para o exercicio se usa o try catch...qdo implemento a solucao e compilo o programa diretamente entra no catch e aparece a mensagem "Deve preencher os dados corretamente. Porque nao entra no try?

namespace PesoIdeal
{
    public partial class Form1 : Form

    {
        RadioButton rbnSelecionado = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void rbnFeminimo_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rbn = (RadioButton) sender;

            if (rbn.Checked)
            {
                rbnSelecionado = rbn;
                SetPesoIdeal();
            }
        }

        private void SetPesoIdeal()
        {
            try
            {
                double altura = Convert.ToDouble(txtAltura.Text);

                double pesoIdeal;

                if (rbnSelecionado.Text.Equals("Feminino"))

                    pesoIdeal = (72.7 * altura) - 58;

                else

                    pesoIdeal = (62.1 * altura) - 44.7;


                lblPesoIdeal.Text = pesoIdeal.ToString("N");
            }
            catch (Exception e)
            {
                MessageBox.Show("Os campos devem ser preenchidos corretamente!");
            }
        }

        private void txtAltura_TextChanged(object sender, EventArgs e)
        {
            SetPesoIdeal();
        }
    }
}
4 respostas

Para ele só entrar no catch quer dizer que o código do try ta soltando exception o tempo todo... Eu verificaria ali se não ta rolando um NullPointer ou outra exception.

Consegui resolver que nao entre sempre no catch. Agregue um if para preguntar si o textBox da altura é uma string vazia ou nao.

Mas agora tenho outro problema. Quando informo a altura o resultado que aparece no label que mostra o peso ideal aparece com as casas decimais equivocadas.

private void rbnFeminimo_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rbn = (RadioButton) sender;

            if (rbn.Checked)
            {
                rbnSelecionado = rbn;

                if(txtAltura.Text != String.Empty)
                SetPesoIdeal();
            }
        }

Se coloco um numero inteiro no textBox da altura a conta dá certo. Mas se coloco algum numero com casa decimal nao da certo a conta

Tive um problema parecido com esse, tenta colocar o numero separando com virgula, se separar com ponto. Da um valor diferente do esperado mesmo.