none
Retornar uma Exception do try catch para uma form RRS feed

  • Pergunta

  • Ola a todos, estou criando um projeto simples de uma sistema de loja estou usando SQl e C# junto ao conceito de MVC, estou na parte de validação de Login, Tenho uma pasta Model com uma classe Login onde contem Usuario e Senha, Meus Sets tem uma Verificação, 


    public void SetSenha(string Senha)
            {
                if (Usuario.Length >= 4)
                    this.Senha = Senha;
                else
                    throw new System.Exception("Senha contem menos de 4 caracteres");           
            }

            public void SetUsuario (string Usuario)
            {
                if (Usuario.Length >= 3)
                    this.Usuario = Usuario;
                else
                    throw new System.Exception("Usuario contem menos de 3 caracteres");
            }


    Na minha pasta Control Tenho uma segunda classe para controlar os dados onde quero retornar o erro encontrado no try catch para minha pasta View, onde terá uma Messagebox mostrando o erro que foi retornado.


        class ControlLogin
        {
            public string Erro;
            public bool ValidaLogin(string Usuario, string Senha)
            {
                try
                {
                    Login login = new Login();
                    login.SetUsuario(Usuario);
                    login.SetSenha(Senha);
                }
                catch (Exception e)
                {
                     this.Erro = e.Message.ToString();
                }
            }
        }


    Minha duvida é como devo fazer isso de um jeito simples se é com retorno de string tratando com o if junto ao try catch ou se há algum jeito de retornar diretamente o erro




    terça-feira, 27 de maio de 2014 21:01

Respostas

  • Olá Fernando,

    Primeiramente parece que há um erro no seu método de tratamento de senha. No caso você quer saber se a senha é maior ou igual a 4 caracteres, certo? Então deverá ser assim:

    public void SetSenha(string Senha)
            {
                if (Senha.Length >= 4)
                    this.Senha = Senha;
                else
                    throw new System.Exception("Senha contem menos de 4 caracteres");           
            }

    Com relação à exception da classe Control, basta repassar à camada View a mensagem gerada no objeto Login:

        class ControlLogin
        {
            public string Erro;
            public bool ValidaLogin(string Usuario, string Senha)
            {
                try
                {
                    Login login = new Login();
                    login.SetUsuario(Usuario);
                    login.SetSenha(Senha);
                }
                catch (Exception e)
                {
                     throw e;
                }
            }
        }

    E na camada View você exibe o erro, caso ele ocorra

            private void button1_Click(object sender, EventArgs e)
            {
                var vl = new ControlLogin();
    
                try
                {
                    vl.ValidaLogin(usuario, senha);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }

    Dessa forma, caso haja algum erro na validação, ele irá apresentar a mensagem que você configurou lá na classe Login.

    • Sugerido como Resposta Dietrich Prg quarta-feira, 28 de maio de 2014 11:22
    • Marcado como Resposta Fernando Rodrigo quarta-feira, 28 de maio de 2014 19:31
    quarta-feira, 28 de maio de 2014 02:26

Todas as Respostas

  • Olá Fernando,

    Primeiramente parece que há um erro no seu método de tratamento de senha. No caso você quer saber se a senha é maior ou igual a 4 caracteres, certo? Então deverá ser assim:

    public void SetSenha(string Senha)
            {
                if (Senha.Length >= 4)
                    this.Senha = Senha;
                else
                    throw new System.Exception("Senha contem menos de 4 caracteres");           
            }

    Com relação à exception da classe Control, basta repassar à camada View a mensagem gerada no objeto Login:

        class ControlLogin
        {
            public string Erro;
            public bool ValidaLogin(string Usuario, string Senha)
            {
                try
                {
                    Login login = new Login();
                    login.SetUsuario(Usuario);
                    login.SetSenha(Senha);
                }
                catch (Exception e)
                {
                     throw e;
                }
            }
        }

    E na camada View você exibe o erro, caso ele ocorra

            private void button1_Click(object sender, EventArgs e)
            {
                var vl = new ControlLogin();
    
                try
                {
                    vl.ValidaLogin(usuario, senha);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }

    Dessa forma, caso haja algum erro na validação, ele irá apresentar a mensagem que você configurou lá na classe Login.

    • Sugerido como Resposta Dietrich Prg quarta-feira, 28 de maio de 2014 11:22
    • Marcado como Resposta Fernando Rodrigo quarta-feira, 28 de maio de 2014 19:31
    quarta-feira, 28 de maio de 2014 02:26
  • Muito obrigado sua resposta resolveu meu problema estou começando e não estou tao familiarizado com o try catch ainda
    quarta-feira, 28 de maio de 2014 19:58