http://milaneze.com.br/post/2009/07/25/C-Tratamento-de-Excecoes.aspx
O tratamento de exceções em C# é feito através do bloco try...catch...finally.
Tudo que possa causar alguma exceção, como por exemplo, uma divisão por zero, deve ser colocado dentro do bloco try.
Cada bloco catch responde a um determinado tipo de exceção, por exemplo: DivideByZeroException ou StackOverflowException.
O bloco finally é chamado existindo ou não uma exceção no bloco try.
Assim que uma exceção ocorre no bloco try, o código para e verifica o primeiro bloco catch para ver se o tipo de exceção corresponde, correspondendo ou não, o código passa para o próximo bloco catch e faz a mesma verificação. Após passar por todos blocos catch (ou mesmo não passando, caso não existam), o código dentro do bloco finally é executado.
Classes de exceção definidas pelo usuários devem ser derivadas da classe ApplicationException e todas exceções do CLR (Common Laguage Runtime) são herdadas da classe SystemException, ambas são derivadas da classe Exception.
Para chamar alguma exceção programaticamente, é possível usar o código throw new ClasseExcecao() dentro de um bloco try. Exemplo: throw new Exception("Erro: Divisão por zero");
O código abaixo é um exemplo de exceção de divisão por zero:
1: class Program
2: {3: static void Main(string[] args)
4: {5: int valor1 = Convert.ToInt16(Console.ReadLine());
6: int valor2 = Convert.ToInt16(Console.ReadLine());
7: 8: int valor3 = 0;
9: 10: try
11: { 12: valor3 = valor1 / valor2; 13: }14: catch (DivideByZeroException excecao)
15: { 16: valor2 = 1; 17: valor3 = valor1 / valor2; 18: Console.WriteLine(excecao.Message);19: Console.WriteLine("valor 2 passa a ser " + valor2.ToString());
20: }21: finally
22: { 23: Console.WriteLine(valor3.ToString()); 24: } 25: 26: Console.WriteLine("\n");
27: 28: try
29: {30: throw new FormatException();
31: }32: catch(FormatException excecao)
33: { 34: Console.WriteLine(excecao.Message); 35: } 36: Console.ReadLine(); 37: } 38: }
Nenhum comentário:
Postar um comentário