Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cmte.Neto

Tratamento de Exceções C#

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.