//1. C# 6 permite await nos blocos catch e finally //vamos criar um sistema de log para ilustrar isso. public async void Main() { Console.WriteLine("9. Await Em Blocos Catch E Finally"); StreamWriter logger = new StreamWriter("LogDoCurso.txt"); try { Aluno marty = new Aluno("Marty", "McFly", new DateTime(1968, 06, 12)) { Endereco = "9303 Lyon Drive Hill Valley CA", Telefone = "555-4385" }; await logger.WriteLineAsync("Aluno Marty McFly criado"); Console.WriteLine(marty.Nome); Console.WriteLine(marty.Sobrenome); Console.WriteLine(marty.DadosPessoais); Avaliacao melhorAvaliacao = GetMelhorNota(marty); Console.WriteLine("Melhor Nota: {0}", melhorAvaliacao?.Nota); marty.AdicionarAvaliacao(new Avaliacao(1, "Geografia", 8)); marty.AdicionarAvaliacao(new Avaliacao(1, "Matemática", 6)); marty.AdicionarAvaliacao(new Avaliacao(1, "História", 7)); melhorAvaliacao = GetMelhorNota(marty); Console.WriteLine("Melhor Nota: {0}", melhorAvaliacao?.Nota); marty.PropertyChanged += (sender, eventArgs) => { Console.WriteLine($"Propriedade {eventArgs.PropertyName} mudou!"); }; marty.Endereco = "novo endereço"; marty.Telefone = "7777777"; Aluno biff = new Aluno("Biff", ""); } catch (ArgumentException exc) when(exc.Message.Contains("não informado")) { Console.WriteLine($"ERRO: O parâmetro '{exc.ParamName}' não foi informado!"); await logger.WriteLineAsync("Erro: " + exc.ToString()); } catch (Exception exc) { Console.WriteLine(exc.ToString()); await logger.WriteLineAsync(exc.ToString()); } finally { await logger.WriteLineAsync("O programa terminou."); logger.Dispose(); } }
public async void Main() { WriteLine("9. Await Em Blocos Catch E Finally"); StreamWriter logAplicacao = new StreamWriter("LogAplicacao.txt"); try { await logAplicacao.WriteLineAsync("Aplicação está iniciando..."); Aluno aluno = new Aluno("Marty", "McFly", new DateTime(1968, 6, 12)) { Endereco = "9303 Lyon Drive Hill Valley CA", Telefone = "555-4385" }; await logAplicacao.WriteLineAsync("Aluno Marty McFly foi criado..."); WriteLine(aluno.Nome); WriteLine(aluno.Sobrenome); WriteLine(aluno.NomeCompleto); WriteLine("Idade: {0}", aluno.GetIdade()); WriteLine(aluno.DadosPessoais); aluno.AdicionarAvaliacao(new Avaliacao(1, "Geografia", 8)); aluno.AdicionarAvaliacao(new Avaliacao(1, "Matemática", 7)); aluno.AdicionarAvaliacao(new Avaliacao(1, "História", 9)); ImprimirMelhorNota(aluno); Aluno aluno2 = null; ImprimirMelhorNota(aluno2); Aluno aluno3 = new Aluno("Bart", "Simpson"); await logAplicacao.WriteLineAsync("Aluno Bart Simpson foi criado..."); ImprimirMelhorNota(aluno3); aluno.PropertyChanged += Aluno_PropertyChanged; aluno.Endereco = "Rua Vergueiro, 3185"; aluno.Telefone = "555-1234"; Aluno aluno4 = new Aluno("Charlie Brown", ""); await logAplicacao.WriteLineAsync("Aluno Charlie Brown foi criado..."); } catch (ArgumentException exc) when(exc.Message.Contains("não informado")) { string msg = $"Parâmetro {exc.ParamName} não foi informado!"; logAplicacao.WriteLine(msg); WriteLine(msg); } catch (ArgumentException) { const string msg = "Parâmetro com problema!"; await logAplicacao.WriteLineAsync(msg); WriteLine(msg); } catch (Exception exc) { await logAplicacao.WriteLineAsync(exc.ToString()); Write(exc.ToString()); } finally { await logAplicacao.WriteLineAsync("Aplicação terminou."); logAplicacao.Dispose(); } }
public async void Main() { WriteLine("9. Filtros De Exceção"); StreamWriter logAplicacao = new StreamWriter("LogAplicacao.txt"); try { await logAplicacao.WriteLineAsync("Aplicação esta iniciando..."); Aluno aluno = new Aluno("Marty", "Hill", new DateTime(1999, 12, 06)) { Endereco = "9303 Lyon Driver Hill Valey Ca", Telefone = "444-45643" }; await logAplicacao.WriteLineAsync("Aluno marty Hill foi criado..."); WriteLine(aluno.Nome); WriteLine(aluno.Sobrenome); WriteLine(aluno.NomeCompleto); WriteLine("Idade: {0}", aluno.GetIdade()); WriteLine(aluno.DadosPessoais); aluno.AdicionarAvaliacao(new Avaliacao(1, "Geografia", 8.0)); aluno.AdicionarAvaliacao(new Avaliacao(1, "Historia", 9.0)); aluno.AdicionarAvaliacao(new Avaliacao(1, "Matemática", 7.0)); Aluno aluno2 = new Aluno("Bart", "Simpson"); await logAplicacao.WriteLineAsync("Aluno Bart Simpson foi criado..."); ImprimirMelhorNota(aluno); ImprimirMelhorNota(aluno2); aluno.PropertyChanged += Aluno_PropertyChanged; aluno.Endereco = "Rua Vergueiro, 3185"; aluno.Telefone = "555-1234"; Aluno aluno3 = new Aluno("Charlie", ""); await logAplicacao.WriteLineAsync("Aluno Charilie Brown foi criado..."); } catch (ArgumentException ex) when(ex.Message.Contains("não informado")) { string msg = $"Paramêtro { ex.ParamName } não foi informado!"; await logAplicacao.WriteLineAsync(msg); Console.WriteLine(msg); } catch (ArgumentException ex) { string msg = "Parâmetro com problema!"; await logAplicacao.WriteLineAsync(msg); Console.WriteLine(msg); } catch (Exception ex) { string msg = ex.ToString(); await logAplicacao.WriteLineAsync(msg); Console.WriteLine(msg); } finally { await logAplicacao.WriteLineAsync("Aplicação terminou."); logAplicacao.Dispose(); } }