A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 16- Tratamento de Exceções Programação Orientada à Objetos.

Apresentações semelhantes


Apresentação em tema: "Aula 16- Tratamento de Exceções Programação Orientada à Objetos."— Transcrição da apresentação:

1 Aula 16- Tratamento de Exceções Programação Orientada à Objetos

2 ADO.NET – Tratando Exceções (Erros)  Qualquer pessoa que já foi um simples usuário de uma aplicação já se deparou com alguma mensagem de erro na sua tela.  Algumas aplicações não tratam tais erros (exceções) de forma correta e deixam que os usuários recebam mensagens que só são entendidas pelo programador - e que não ajudam em nada o usuário.  O tratamento de exceções consiste em interceptar esses erros fim de que o programa não aborte inesperadamente e ainda, consiga informar ao usuário o que está errado.

3 ADO.NET – Tratando Exceções (Erros)  No C# as exceções (ou exceptions) são tratadas com as instruções try, catch e finally.  A idéia consiste em proteger um bloco de código com o try e, caso ocorra algum erro, a exceção gerada será capturada pelo bloco catch.  Dentro do bloco catch geralmente exibimos uma mensagem (MessageBox) para o usuário, explicando-lhe que houve um erro.  Caso seja necessário sempre executar uma determinada ação (código) ao final, não importando se foi OK ou se deu algum erro, inserimos tal código num bloco finally.

4 ADO.NET – Tratando Exceções (Erros)  Resumindo: try - define o bloco que contem a execução normal do código; catch - define o bloco com o código que será executado caso ocorra alguma exceção dentro do bloco protegido pelo try. Aqui é feito o tratamento de erros; finally (opcional) - define o bloco que será executado independentemente se ocorreu uma exceção ou não.

5 ADO.NET – Tratando Exceções (Erros)  Na prática: A seguir a interface e o código de um formulário que tem por objetivo calcular a área de um triângulo:

6 ADO.NET – Tratando Exceções (Erros)  Evento click do botão

7 ADO.NET – Tratando Exceções (Erros)  O código acima funciona perfeitamente mas não prevê erros.  Se por acaso clicarmos no botão com os campos vazios ou letras no lugar de números o programa vai exibir uma mensagem padrão do.NET, indicando que ocorreu uma exceção e o código será interrompido.

8 ADO.NET – Tratando Exceções (Erros)  A mensagem padrão de erro será parecida com esta:  O que o usuário irá pensar ao ver esta mensagem?!? :(

9 ADO.NET – Tratando Exceções (Erros)  Agora vejamos o código com tratamento de erro simples. Nesse caso, se ocorrer algo errado uma mensagem mais amigável será exibida no lugar da mensagem de erro padrão do.NET.

10 ADO.NET – Tratando Exceções (Erros)  Agora, se o usuário não informar os dados e clicar no botão, a mensagem que será exibida será assim:

11 ADO.NET – Tratando Exceções (Erros)  Exemplo do finally  Vamos imaginar que a gente queira limpar o conteúdo dos textBox ao final, não importando se deu certo ou se deu erro.  Para isso, basta adicionar um bloco finally com o código correspondente.  A seguir o código completo com a instrução finally :

12 ADO.NET – Tratando Exceções (Erros)

13  Exercício 1  Agora crie um projeto chamado ProjTratamentoExcecao e reproduza o exemplo citado anteriormente (ou similar). Execute e teste sua aplicação.

14 ADO.NET – Tratando Exceções (Erros)  Quando trabalhamos com BD as exceções geralmente ocorrem em dois momentos: 1. Ao tentar conectar com o BD; 2. Ao executar um comando SQL.

15 ADO.NET – Tratando Exceções (Erros)  Os erros que ocorrem na hora da conexão com o BD frequentemente estão associados a: String de conexão inválida (errada). Servidor de BD não existe ou não está acessível. Falha no login (usuário e/ou senha inválidos).  Já os erros mais comuns quando tentamos executar um comando SQL são: Sintaxe incorreta do comando SQL (SELECT, UPDATE, INSERT e DELETE). Nome da tabela ou coluna incorretos.

16 ADO.NET – Tratando Exceções (Erros)  Vimos também que podemos tratar os erros ocorridos na aplicação através da estrutura try..catch..finally.  Agora vamos aprender um pouco mais sobre as exceções em.NET.

17 ADO.NET – Tratando Exceções (Erros)  Toda exceção lançada por um programa em.NET pertence à classe Exception (System.Exception).  Isto significa que a classe de uma exceção sempre será System.Exception ou uma de suas sub-classes, por exemplo, FormatException ou DivideByZeroException.

18 ADO.NET – Tratando Exceções (Erros)  Vamos criar uma aplicação para ficar mais claro. Crie o projeto ProjTratamentoExcecoes e configure o formulário principal da forma ilustrada a seguir:

19 ADO.NET – Tratando Exceções (Erros)  Este programa irá receber a base e a altura de um triângulo e então calcular e exibir a sua área em um MessageBox.  Digite o código a seguir no evento Click do botão:

20 ADO.NET – Tratando Exceções (Erros)  Perceba que a principal diferença entre o tratamento de erro usado aqui e o do exemplo anterior está no bloco catch, onde agora definimos a variável erro da classe Exception para que possamos acessar as informações do erro originado pelo.NET.  O comando erro.Message irá retornar a mensagem de erro original, já o erro.GetType() retornará a classe da exceção gerada.

21 ADO.NET – Tratando Exceções (Erros)  Se agora executarmos nossa aplicação e clicarmos no botão sem preencher qualquer campo, receberemos a seguinte mensagem:

22 ADO.NET – Tratando Exceções (Erros)  Perceba que além de exibirmos a mensagem padrão (" Ocorreu um erro ao calcular a área "), temos outras informações: a mensagem de erro originado pelo.NET e a sua classe ( FormatException ).  Agora outro teste. Se digitarmos valores muito grandes nos campos e clicarmos no botão a mensagem será:

23 ADO.NET – Tratando Exceções (Erros)  Veja como mudaram a mensagem original e a classe da exceção ( OverflowException ).  Tanto FormatException como OverflowException são sub- classes da classe Exception.  A seguir um diagrama de classes UML para ilustrar melhor essa hierarquia de classes de exceções:

24 ADO.NET – Tratando Exceções (Erros)  Perceba que toda exceção possui uma classe ancestral em comum, a classe Exception.  Através desta hierarquia podemos refinar/melhorar nossas mensagens de erro para o usuário. Podemos, por exemplo, exibir a mensagem " Digite apenas números para os campos " quando a classe da exceção for FormatException.  E a mensagem " Valor informado está muito grande " quando a classe for OverflowException. E ainda, exibir a mensagem padrão " Ocorreu um erro ao calcular a área " no caso de qualquer outra exceção.  Fazemos isso inserindo vários blocos catch – um para cada exceção que desejamos capturar e tratar separadamente. Veja o código de exemplo:

25 ADO.NET – Tratando Exceções (Erros)

26  Uma coisa importante a observar neste código é que, os blocos catch mais específicos ( FormatException e OverflowException ) devem ser digitados antes dos mais genéricos ( Exception ).  Mas não se preocupe, se não tomarmos este cuidado, o compilador irá nos avisar exibindo uma mensagem de erro ao compilarmos o nosso programa.  Como todas as exceções são classes elas possuem propriedades e métodos. Message é uma propriedade que nos informa a mensagem original do.NET e GetType() é um método que nos retorna a classe da exceção.  Tanto Message como GetType() estão implementados na classe Exception e, portanto, estão acessíveis em todas as suas sub- classes.

27 ADO.NET – Tratando Exceções (Erros)  A exceção SqlException  Uma classe de exceção que muito nos interessa quando trabalhamos com acesso ao BD é a SqlException. Além das propriedades herdades de Exception ela possui outras, dentre elas podemos citar: Number : informa o código interno do erro no BD. Cada erro lançado por um SGBD possui um código interno – estes códigos são diferentes para cada SGDB (MS SQL Server, Oracle, Postgres etc); LineNumber : informa a linha do comando SQL onde ocorreu o erro.  Com estas propriedades, podemos tratar as mensagens lançadas pelo BD, que são as exceções da classe SqlException, através do seu código e ainda informar qual a linha onde ocorreu o erro.

28 ADO.NET – Tratando Exceções (Erros)  Vamos a um exemplo prático.  Abra o MS SQL Server Management Studio. Na tela inicial (onde informamos o servidor, usuário e senha) digite um servidor que não existe, por exemplo "teste123" e clique no botão 'Connect'. Receberemos então uma mensagem gerada pelo SGDB a qual conterá seu código interno, veja a imagem do erro:

29 ADO.NET – Tratando Exceções (Erros)  Percebam no destaque que o código interno do erro gerado pelo SQL Server foi 53. Podemos recuperar este código no C# e exibir uma mensagem de erro mais amigável para o usuário dessa forma:

30 ADO.NET – Tratando Exceções (Erros)  Exercício 2  Baseando-se no exemplo anterior, insira um tratamento de exceções adequado no projeto da aula anterior (ou similar) para que, ao clicar no botão 'Conectar ao BD', sejam tratadas as exceções de: servidor inválido, banco de dados inválido e usuário/senha inválidos. Como parte deste exercício, você terá que descobrir os códigos dos respectivos erros e implementá-los na sua aplicação.

31 Dúvidas?


Carregar ppt "Aula 16- Tratamento de Exceções Programação Orientada à Objetos."

Apresentações semelhantes


Anúncios Google