Prof. Roberto Rosa robertorsci@gmail.com Aula 8. A partir de agora vamos aprender como ver qual é...

Post on 21-Apr-2015

106 views 1 download

Transcript of Prof. Roberto Rosa robertorsci@gmail.com Aula 8. A partir de agora vamos aprender como ver qual é...

LINGUAGEM DE PROGRAMAÇÃO VISUAL

II

Prof. Roberto Rosarobertorsci@gmail.com

Aula 8

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".

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.

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.

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.

Categoria de Exceções

Exceções verificadas

subclasse de Exception

utilizadas para falhas iniciais

onde a recuperação talvez seja possível

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

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.

Hierarquia de Exceções

Hierarquia de Exceções

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.

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:

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

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.

Blocos Try Catch

Exemplo de blocos tratadores básico

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.

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.

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.

Capturando Múltiplas Exceções

Exemplo de captura com mais de 1 catch

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.

Multi-catch no Java

Exemplo de blocos tratadores com multi-catch

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.

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.

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.

A cláusula finally

Exemplo de blocos tratadores com finally