Usuário com melhor resposta
Retornar uma Exception do try catch para uma form

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
- Editado Fernando Rodrigo terça-feira, 27 de maio de 2014 21:04
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
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
-