Prof. Roberto Rosa [email protected] Aula 8. A partir de agora vamos aprender como ver qual é...

24
LINGUAGEM DE PROGRAMAÇÃO VISUAL II Prof. Roberto Rosa [email protected] Aula 8

Transcript of Prof. Roberto Rosa [email protected] Aula 8. A partir de agora vamos aprender como ver qual é...

Page 1: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

LINGUAGEM DE PROGRAMAÇÃO VISUAL

II

Prof. Roberto [email protected]

Aula 8

Page 2: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Aprendendo a trabalhar com Exceções

A partir de agora vamos aprender como ver qual é o erro

que está acontecendo em nosso projeto. Para isso, a

primeira coisa que precisamos entender é como utilizar os

blocos tratadores, no caso o "try catch".

Page 3: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Aprendendo a trabalhar com Exceções

Quando criamos um método em alguma linguagem de

programação o mesmo pode não estar apto para resolver

ou detectar alguma falha que venha a acontecer.

As exceções são lançadas para sinalizar alguma falha que

tenha ocorrido. Tal lançamento causa uma interrupção

abrupta na execução do sistema.

Page 4: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Aprendendo a trabalhar com Exceções

A maior parte das linguagens de

programação(principalmente as Orientadas a Objetos) tem

suporte para a utilização de exceções. O Java, PHP, por

exemplo são bons exemplos de linguagens com suporte ao

tratamento de Exceções.

Page 5: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Aprendendo a trabalhar com Exceções

Também podemos lançar exceções ou criar as nossas próprias exceções. O Java por exemplo nos dá suporte para:

Representar uma exceção*

Uma forma para lançar a exceção (throw/throws)

Uma forma para tratar a exceção (try-catch-finally)

*No caso do Java as exceções são representadas por classes.

Page 6: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Categoria de Exceções

Exceções verificadas

subclasse de Exception

utilizadas para falhas iniciais

onde a recuperação talvez seja possível

Page 7: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Categoria de Exceções

Exceções não-verificadas

subclasse de RuntimeException

utilizadas para falhas não-antecipadas

onde a recuperação não é possível

Page 8: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Hierarquia de Exceções

A classe Throwable é o "vô" de todas as classes que

representam um erro ou uma exceção.

A partir dele podemos utilizar os principais métodos para

saber o que aconteceu de erro, problema, etc.

A imagem a seguir ilustra qual é a hierarquia básica das

Exceções na linguagem Java em especial.

Page 9: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Hierarquia de Exceções

Hierarquia de Exceções

Page 10: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Hierarquia de Exceções

Principais métodos

No Java são três os principais métodos que relatam a exceção ocorrida, são eles:

void printStackTrace(): Lista a seqüência de métodos chamados até o ponto onde aj exceção foi lançada.

String getMjessage() - Retorna uma mensagem que indica o que ocorreu na exceção.

toString() - Esse método retorna uma breve descrição da exceção que ocorreu.

Page 11: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Cláusula Throws

Podemos lançar exceções a partir dos métodos. Para lançar uma exceção a partir de um método deve ser utilizada a cláusula throws, conforme Figura:

Page 12: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Cláusula Throws

Podemos lançar exceções a partir dos métodos. Para lançar uma exceção a partir de um método deve ser utilizada a cláusula throws, conforme Figura:

Exemplo de lançamento de exceção através da cláusula throws

Page 13: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Blocos Try Catch

Clientes que capturam uma exceção devem proteger a

chamada com um bloco try. Qualquer número de

instruções pode ser incluído em um bloco try. A cláusula

catch tentará capturar exceções geradas por qualquer

instrução dentro do try precedente.

Page 14: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Blocos Try Catch

Exemplo de blocos tratadores básico

Page 15: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Capturando Múltiplas Exceções

Podemos também utilizar na maioria das linguagens 2 ou

mais blocos de "catch", conseguindo assim tratar 2 ou mais

exceções a partir de um único "try". A figura a seguir

mostra como ficaria um "try" com dois tratamentos de

exceções especializados e o terceiro é um tratamento de

exceção genérico para qualquer tipo de exceção que não

se enquadre nos 2 catchs iniciais.

Page 16: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Capturando Múltiplas Exceções

Quando ocorre uma exceção, o java procura um bloco

tratador adequado. Os "catch" são checados em sequência,

ou seja, o primeiro catch que estiver tratando a exceção

que ocorreu é executado. Após a execução do catch, se

houver outros catchs os mesmos não são executados,

porém o software continua com a sua execução normal

após o último bloco tratador.

Page 17: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Capturando Múltiplas Exceções

Sempre cuide a ordem ao declarar os "catch's". Nunca

podemos colocar um bloco catch tratando Exception antes

dos tratamentos de outras Exceptions, isso porque

Exception é pai de todas as outras exceções.

Page 18: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Capturando Múltiplas Exceções

Exemplo de captura com mais de 1 catch

Page 19: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Multi-catch no Java

No Java a partir do JDK7 é possível a utilização de multi-catch, ou seja, podemos inserir 2 ou mais exceções em um único catch.

Page 20: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Multi-catch no Java

Exemplo de blocos tratadores com multi-catch

Page 21: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

Aninhamento de Exceções

Também podemos colocar dentro de um bloco try outro

trycatch, fazendo o tratamento de exceções de forma

aninhada. Ao tratar de forma aninhada podemos

individualizar e especializar as mensagens de erro, fazendo

com que o usuário identifique exatamente o que ele

realmente errou.

Page 22: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

A cláusula finally

A cláusula finally é opcional, ou seja, você pode criar um

bloco tratador try-catch sem finally. Se você optar por

colocar a instrução finally ela será sempre executada,

mesmo que não ocorra uma exceção dentro do bloco try.

Page 23: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

A cláusula finally

Se ocorrer uma exceção no try, e não for capturada por

nenhum catch, mesmo assim o finally é executado

Se ocorrer uma exceção e a mesma for capturadda por

algum catch, mesmo assim o finally é executado.

Na prática o finally pode e deve ser utilizado para fechar

conexões de rede, conexão com o banco de dados, escrita

e leitura de arquivos, entre outros.

Page 24: Prof. Roberto Rosa robertorsci@gmail.com Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.

A cláusula finally

Exemplo de blocos tratadores com finally