Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira...

18

Transcript of Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira...

Page 1: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.
Page 2: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Tecnologia para WebTratamento de Exceções

Enrique Pimentel Leite de Oliveira

[email protected]

Page 3: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Tratamento de Exceções• Definição: Uma exceção é um evento que ocorre durante a

execução de um programa que interrompe o fluxo normal de suas instruções.

• A plataforma .Net oferece um mecanismo robusto para tratamento de exceções.– provêm da biblioteca System.Exception

• Os erros são tratados como objetos que encapsulam informações necessárias para resolvê-los. Esse mecanismo é conhecido como SEH (Structured Exception Handling).

Page 4: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Tratamento de Exceções• “Onde pode ocorrer uma exceção?” • Em geral a ocorrência de exceção abrange:

– implementação incorreta da solução de um problema;– solicitação de uma tarefa que não está disponível;– utilização inconsistente de um objeto e de seus métodos.

• Algumas situações que podem gerar exceções:– erros de entrada de dados do usuário;– erros de dispositivos;– limitações físicas de hardware como: discos cheios,

memórias, etc;– erro de programação.

Page 5: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Tratamento de Exceções• A forma tradicional para tratamento das situações

errôneas, seria retornar um código de erro onde fosse possível analisar o que é dado válido ou inválido. Porém, esta forma de programação não condiz com orientação a objetos.

• Em orientação a objetos, devemos utilizar exceções para tratar de situações onde erros podem ocorrer.

Page 6: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

O objeto Exception• O objeto Exception é a classe base para

todas as exceções e define as propriedades que todas as exceções têm.

Page 7: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

O objeto ExceptionPropriedade Descrição

Data Uma coleção de pares (chave/valor) que fornece detalhes adicionais sobre a exceção.

HelpLink O link para o arquivo de ajuda que contém uma descrição da exceção.

InnerException A exceção base que causou o problema.

Message Texto descritivo da exceção.

Source O nome da aplicação ou objeto que causou o problema.

StackTrace Apresenta a seqüência de métodos chamados que dispararam o erro.

TargetSite O método que lançou a exceção atual.

Page 8: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Como tratar exceções• Estrutura básica try catch finally:

try {

// Código a ser executado } catch (TipoExceção1 e) {

// tratamento da exceção1} catch (Exception e) // erro genérico {

// tratamento genérico } finally {

// Este bloco de código sempre será executado, havendo ou não exceção!

}

Page 9: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Como tratar exceções• Vale ressaltar que é possível adicionar quantos catches

forem necessários, ordenando sempre do mais específico para o mais genérico.

• Quando uma exceção for gerada, apenas um bloco catch é executado, desviando o fluxo para o bloco finally (se este existir).

• O bloco finally será sempre executado independente da ocorrência de uma exceção

Page 10: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Exemplotry{

// Código que gerará a exceçãoint x = 10;int y = 0;int z = x/y; //divisão por zerotxtResult.Text = z.ToString(); // esta linha não será executada

}catch (System.Exception e){

// Apresenta o erro txtResult.Text = e.Message;

}finally {

// Este bloco de código sempre será executado, ocorrendo ou não exceção!

lblMsg.Text = “Bloco finally executado!”;}

Page 11: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Gerando ou lançando Exceções• Vimos como tratar exceções, mas em alguns casos é

necessário gerar exceções ou lançar essa exceção para que alguma classe acima trate-a.

• Para isso utilizamos o comando throw

• Exemplos:– throw new Exception(“descrição”);– throw new Exception(“descrição”, excecao_base);

Page 12: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Gerando ou lançando Exceções• Para lançar uma exceção, simplesmente colocamos o

comando:– throw;

• Isso faz com que a exceção ocorrida seja “lançada”. Normalmente utilizamos esse recursos em classes onde o tratamento de exceção não é necessário, como por exemplo classes de acesso a BD. Nesse caso a classe de regras de negócio deveria tratar a exceção.

Page 13: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Classes de Exceções definidas pelo usuário

• Na maioria dos casos, as classes de exceção da .Net Framework são suficientes para o tratamento das exceções dos programas. Porém em alguns casos a necessidade de criação de novas classes de exceções existem.

• Para criar novas classes de exceções é necessário que elas herdem direta ou indiretamente da classe ApplicationException.

Page 14: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Exemplousing System;namespace RaizQuadradaTest{

class NumeroNegativoException: ApplicationException{

public NumeroNegativoException(): base( “Operação inválida para número negativo”){}public NumeroNegativoException(string msg): base( msg){}public NumeroNegativoException(string msg, Exception inner): base(msg, inner){}

}}

Page 15: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Exemplo - Continuação• Método da classe herdada de Formpublic double RaizQuadrada(double valor){

if (valor < 0){

throw new NumeroNegativoException(“Não existe raiz quadrada de número negativo”);}else

return Math.Sqrt(valor);}

Page 16: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Exercício• Criar um programa para demonstrar a

utilização das exceções criadas pelo usuário. Além das exceções criadas, o programa deve tratar outras exceções que possivelmente ocorrerão durante os testes. Por exemplo: FormatException. Ao capturar um erro, o programa deve exibir uma mensagem de erro ao usuário contendo.

Page 17: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.

Bibliografia• http://www.msdnbrasil.com.br/Tecnologias/

arquitetura/nova/blocos_disp/ger_excecoes/exceptdotnet.htm

• www.msdnbrasil.com.br/docs/net/vstudio_exceptions.doc

• http://www.rodrigobytes.com.br/programacao/ler.aspx?id=3&cat=8

Page 18: Tecnologia para Web Tratamento de Exceções Enrique Pimentel Leite de Oliveira enrique.leite@aes.edu.br.