Академический Документы
Профессиональный Документы
Культура Документы
NET
Programao em C#
Programao em C#
Exemplo:
try { int left = Convert.Int32(leftOp.Text); int right = Convert.Int32(leftOp.Text); int answer = doCalculation(left, right); result.Text = answer.ToString(); } catch (FormatException fexp) { .... }
Programao em C#
Quando FormatException acionada, a varivel fexp preenchida com um objeto que contm os detalhes da exceo. As informaes fornecidas pelos detalhes da exceo podem ser usadas para manipul-la. Se a exceo no for capturada pelo bloco try, por exemplo - um estouro da varivel inteira (OverflowException), procura-se o mtodo chamador.
Programao em C#
Aps ento verifica-se se o mtodo chamador usa um bloco try/catch, caso negativo, o mtodo chamador termina e retorna ao seu chamador, onde o processo repetido. Se um catch correspondente encontrado, ele executado e a execuo continua na primeira instruo aps o manipulador.
Programao em C#
Se aps a cascata no se encontrar um manipulador correspondente, o programa termina com uma esceo no manipulada. Se o programa estiver sendo executado no Visual em modo de depurao (F5), ento mesmo no encontrando a exceo o Visual pra e exibe uma mensagem na linha que gerou a exceo.
Programao em C#
Programao em C#
Programao em C#
Existem muitas excees no .NET Framework e qualquer programa pode acionar a maioria delas. As excees so organizadas em famlias, denominadas hierarquias de herana. FormatExceptio e OverflowException pertencem a uma famlia denominada SystemException.
Programao em C#
10
Ao invs de capturar cada uma das excees pode ser criado um manipulador que capture SystemException.
try { .... } catch (SystemException exp) { .... }
Programao em C#
11
Todas as excees derivam de Exception. Se Exception for capturada estamos ento capturando toda e qualquer exceo.
try{ ..... } catch (Exception exp) { ..... }
Programao em C#
12
Programao em C#
13
Quando ocorre uma exceo, usado o primeiro manipulador encontrado pelo runtime que corresponde a exceo, os outros so ignorados. Deve-se colocar os manipuladores catch mais especficos antes de um geral.
Programao em C#
14
Programao em C#
15
Programao em C#
16
Acionando Excees
Suponha que estejamos implementando um mtodo, nomeMes, que aceita um argumento int e retorna o nome do ms correspondente. O que deve ser retornado se por acaso o argumento for < 1 ou > 12? Na verdade, o mtodo no deve retornar nada, ao invs deve acionar uma exceo.
Programao em C#
17
Acionando Excees
public static string nomeMes(int mes) { switch (mes) { case 1: return Janeiro; case 2: return Fevereiro; .... default: throw new ArgumentOutOfRangeException(Ms Incorreto); } } A mensagem deve ser tratada no catch.
Programao em C#
18
Acionando Excees
importante lembrar que quando uma exceo acionada, ela altera o fluxo da execuo no programa. No se pode garantir que uma instruo ser sempre executada quando a instruo anterior terminar.
Programao em C#
19
Acionando Excees
TextReader reader = src.OpenText(); string line. while((line = reader.ReadLine())!=null) { source.Text += line + \r\n; } reader.Close();
20
Acionando Excees
O fato de uma instruo especfica no ser executada nem sempre problema. Porm, se a instruo libera um recurso que foi adquirido em uma instruo anterior, ento a falha na execuo dessa instruo resultar na reteno do recurso. Por exemplo, se abrirmos o arquivo com sucesso, devemos fech-lo.
Programao em C#
21
Acionando Excees
Se no fizermos isto, podemos ficar sem manipuladores de arquivos. Imagine ento se formos usar banco de dados. A maneira de garantir que uma instruo seja sempre executada com um bloco finally. Ocorre imediatamente aps um try ou a um catch.
Programao em C#
22
Acionando Excees
Se a exceo for capturada localmente o catch executado primeiro, ento o finally executado Se a exceo no capturada localmente, o finally executado imediatamente. Finally sempre executado.
Programao em C#
23
Acionando Excees
TextReader reader = src.OpenText(); string line. while((line = reader.ReadLine())!=null) { source.Text += line + \r\n; } finally { if (reader!=null) reader.Close(); }
Programao em C#
24
Enumerao
So conjuntos de valores limitados. enum nome_conjunto {elementos}
Os nomes simblicos devem aparecer entre chaves, numa lista separada por vrgulas.
Programao em C#
25
Enumerao
Programao em C#
26
Enumerao
Cada enumerao tem um conjunto de valores inteiros associados aos seus elementos, iniciando com 0 por padro. Se desejarmos podemos associar constante~a um literal de enumerao.
Programao em C#
27
Enumerao
Em uma enumerao seus literais recebem valores do tipo int. Voc pode economizar memria declarando os literais como um inteiro subjacente diferente.
28
Enumerao
Crie um projeto Console Application. Crie um enum para representar os meses do ano. Entrada de dados:
Um nmero de 1 a 12
Sada:
O ms correspondente.
29
Enumerao
Programao em C#
30
Enumerao
Programao em C#
31
Enumerao
Programao em C#
32
Estruturas
Pode ter seus prprios campos, mtodos e construtores exatamente como uma classe, mas um tipo por valor. As estruturas so armazenadas na stack, a sobrecarga de gerenciamento de memria reduzida. struct nome { .... }
Programao em C#
33
Estruturas
Assim como nas classes, na maioria dos casos no aconselhvel tornar os campos de uma estrutura public. No h como garantir que os campos public contenham valores vlidos. Por exemplo, qualquer pessoa poder definir o valor de minutos e segundos como um valor maior que 60.
Programao em C#
34
Estruturas
struc Time { private int horas, minutos, segundos; public Time(int hh, int mm, int ss) { horas = hh % 24; minutos = mm % 60; segundos = ss % 60; } public int Horas() { return horas; } ... }
Programao em C#
35
Estruturas
Use structs para implementar conceitos simples cujas caractersticas principais so seus valores. O prximo exerccio tem por objetivo usas structs. Crie um projeto Windows Application e desenhe o seguinte formulrio.
Programao em C#
36
Estruturas
A comboBox Fone possui os seguinte valores: -Fixo residencial - Celular residencial - Fixo Trabalho - Celular Trabalho O boto Mostrar s deve ser habilitado aps o clique em salvar.
Programao em C#
37
Estruturas
Programao em C#
38
Estruturas
Programao em C#
39
Estruturas
Programao em C#
40
Estruturas
Programao em C#
41
Estruturas
Programao em C#
42
Estruturas
No ltimo exerccio foram deixados os campos da struct como public. Mudar a implementao para que os mesmos sejam private, adicione um construtor para a struct e as funes de retorno de cada item.
Programao em C#
43