public static void AnalisarGravarUsuario(int qtdRepeticoes) { Usuario usuarioComErrosDeCadastro = new Usuario() { Nome = null, Idade = 21 }; bool utilizarTryCatchNaValidacao = true; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < qtdRepeticoes; i++) { usuarioComErrosDeCadastro.Gravar(utilizarTryCatchNaValidacao); } stopwatch.Start(); TimeSpan tempoValidacaoComTryCatch = stopwatch.Elapsed; stopwatch.Reset(); utilizarTryCatchNaValidacao = false; stopwatch.Start(); for (int i = 0; i < qtdRepeticoes; i++) { usuarioComErrosDeCadastro.Gravar(utilizarTryCatchNaValidacao); } stopwatch.Stop(); TimeSpan tempoValidacaoSemTryCatch = stopwatch.Elapsed; Console.WriteLine(String.Format("Tempo de validação UTILIZANDO o try catch, repetindo o processo {0} vezes: {1}", qtdRepeticoes, tempoValidacaoComTryCatch)); Console.WriteLine(String.Format("Tempo de validação NÃO UTILIZANDO o try catch, repetindo o processo {0} vezes: {1}", qtdRepeticoes, tempoValidacaoSemTryCatch)); Console.WriteLine(String.Format("Utilizando o try catch, a validação se tornou {0} vezes mais lenta em {1} repetições.", tempoValidacaoComTryCatch.Ticks / tempoValidacaoSemTryCatch.Ticks, qtdRepeticoes)); }
private static List<string> ValidarNaoUtilizandoTryCatch(Usuario usuario) { List<string> erros = new List<string>(); if (usuario.Nome == null) { erros.Add("O nome do usuário deve ser informado."); } else if (usuario.Nome.Length > 100) { erros.Add("O nome do usuário tem mais de 100 caracteres, informe um nome válido."); } return erros; }
private static List<string> ValidarUtilizandoTryCatch(Usuario usuario) { List<string> erros = new List<string>(); try { if (usuario.Nome.Length > 100) { throw new Exception(""); } } catch { erros.Add("O nome do usuário é nulo ou tem mais de 100 caracteres, informe um nome válido."); } return erros; }