Prof. Roberto Rosa [email protected] Aula 8. A partir de agora vamos aprender como ver qual é...
Transcript of Prof. Roberto Rosa [email protected] Aula 8. A partir de agora vamos aprender como ver qual é...
![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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/2.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/3.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/4.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/5.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/6.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/7.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/8.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/9.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/10.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/11.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/12.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/13.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/14.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/15.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/16.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/17.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/18.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/19.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/20.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/21.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/22.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/23.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062700/552fc15e497959413d8e5e1d/html5/thumbnails/24.jpg)
A cláusula finally
Exemplo de blocos tratadores com finally