Cmte.Neto 0 Denunciar post Postado Março 10, 2011 Preciso criar o seguinte tratamento de execção no C#. Ao clicar em um botão para incluir, as seguintes validações deverão ser feitas através de tratamento de exceção: 1 - O nome deve ter no mínimo 3 caracteres. 2 - A senha deve ser idêntica tanto no txtSenha como no txtRepetir e deve ter no mínimo 4 caracteres. 3 - A data de nascimento deve estar no intervalo entre 01/01/1960 e 31/12/1990. Consegui resolver os dois primeiros porem o ultimo que é a data de nascimento não consegui sucesso,alguem saberia como me ajudar ? Vou enviar o código do primeiro tratamento de execção para vocês terem noção de como esta meu código. private static void ValidarNome(string nome) { if (nome.Trim().Length < 3) { string msg = "O nome tem que conter no minimo 3 caracteres."; ApplicationException e = new ApplicationException(msg); throw e; } } Abçs Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Março 10, 2011 Primeiro, não confunda C# com C ou C++. Vou mover o post pra área certa. Sobre a sua dúvida... você pesquisou as ferramentas que o C# oferece pra tratamento de datas? Se sim, sabe que pode usar a struct DateTime. A solução é bem simples: using System; class TesteData { static void Main() { Console.Write("Dia: "); int dia = int.Parse(Console.ReadLine()); Console.Write("Mes: "); int mes = int.Parse(Console.ReadLine()); Console.Write("Ano: "); int ano = int.Parse(Console.ReadLine()); DateTime usuario = new DateTime(ano, mes, dia); DateTime minimo = new DateTime(1960, 1, 1); DateTime maximo = new DateTime(1990, 12, 31); if (usuario < minimo) throw new ApplicationException("Erro: data de nascimento menor que a mínima"); if (usuario > maximo) throw new ApplicationException("Erro: data de nascimento maior que a máxima"); } } Pra sua classe, vai ser algo do tipo: private static void ValidarNascimento(int dia, int mes, int ano) { DateTime usuario = new DateTime(ano, mes, dia); DateTime minimo = new DateTime(1960, 1, 1); DateTime maximo = new DateTime(1990, 12, 31); if (dt < minimo) throw new ApplicationException("Erro: data de nascimento menor que a mínima"); if (dt > maximo) throw new ApplicationException("Erro: data de nascimento maior que a máxima"); } Uma sugestão é colocar os valores de data mínima e máxima como membros da classe ao invés de diretamente no código do método que valida datas. Então sua classe ficaria assim: class Validacao { private static DateTime dataMinima = new DateTime(1960, 1, 1); private static DateTime dataMaxima = new DateTime(1990, 12, 31) // outros metodos static void validarNascimento(int dia, int mes, int ano) { DateTime usuario = new DateTime(ano, mes, dia); if (usuario < dataMinima) throw new ApplicationException("Erro: data de nascimento menor que a mínima"); if (usuario > dataMaxima) throw new ApplicationException("Erro: data de nascimento maior que a máxima"); } // faz sentido fazer overload pra que se possa passar diretamente um DateTime pra ser validado static void ValidarNascimento(DateTime nascimento) { if (nascimento < dataMinima) throw new ApplicationException("Erro: data de nascimento menor que a mínima"); if (nascimento > dataMaxima) throw new ApplicationException("Erro: data de nascimento maior que a máxima"); } } Como você deve ter percebido, faz sentido usar o segundo método pro primeiro pra modularizar melhor, diminuir o tamanho do código e isolar o comportamento da validação: class Validacao { private static DateTime dataMinima = new DateTime(1960, 1, 1); private static DateTime dataMaxima = new DateTime(1990, 12, 31); // outros metodos // primeiro definimos um metodo que usa um DateTime como parametro static void ValidarNascimento(DateTime nascimento) { if (nascimento < dataMinima) throw new ApplicationException("Erro: data de nascimento menor que a mínima"); if (nascimento > dataMaxima) throw new ApplicationException("Erro: data de nascimento maior que a máxima"); } // e agora o reutilizamos no que usa os ints static void validarNascimento(int dia, int mes, int ano) { DateTime usuario = new DateTime(ano, mes, dia); validarNascimento(usuario); } } Qualquer dúvida, é só perguntar. Compartilhar este post Link para o post Compartilhar em outros sites