java: excecoes e tratamento de erros
TRANSCRIPT
![Page 1: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/1.jpg)
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia
![Page 2: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/2.jpg)
Introdução
• Em sistemas de verdade, é muito comum que quem saiba tratar o erro é aquele que chamou o método e não a própria classe.
• Portanto, nada mais natural do que a classe sinalizar que um erro ocorreu.
![Page 3: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/3.jpg)
Exceção
• Uma exceção representa uma situação que normalmente não ocorre e representa algo de estranho ou inesperado no sistema.
• O sistema de exceções do Java funciona da seguinte maneira: – quando uma exceção é lançada (throw), a JVM entra
em estado de alerta e vai ver se o método atual toma alguma precaução ao tentar executar esse trecho de código.
![Page 4: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/4.jpg)
Exceções
• Um código que vai tentar (try) executar o bloco perigoso de código e ele será pego (caught).
• Cada exceção no Java tem um tipo e pode ter atributos e métodos.
![Page 5: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/5.jpg)
Exceções
• Tratando-as no código:
try {//Código a ser ‘testado’}catch (Exception e){//Código que irá tratar a exceção //capturada}
![Page 6: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/6.jpg)
Exceções mais comuns
• Divisão por zero
• Correção
![Page 7: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/7.jpg)
Exceções mais comuns
• Acessar posição inválida de array
• Correção
![Page 8: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/8.jpg)
Exceções mais comuns
• Referência para null tentando ser acessada
• Correção
![Page 9: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/9.jpg)
Tipos de Exceções
• Checked Exceptions– obriga a quem chama o método ou construtor a
tratar essa exceção– o compilador checará se ela está sendo
devidamente tratada• Unchecked Exceptions• o compilador não checará e não obrigará a exceção a ser
tratada• Código pode ser compilado e executado
![Page 10: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/10.jpg)
• Abrir um arquivo sem tratar a Checked Exception
• Resulta em erro
• Código não é compilado
Checked Exceptions
![Page 11: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/11.jpg)
Checked Exceptions
• Solução 1– tratar com o try e catch
![Page 12: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/12.jpg)
Checked Exceptions
• Solução 2– delegar o erro para quem chamou o nosso
método, isto é, passar para a frente.– Avisa da possibilidade daquele método lançar
exceção, obrigando o outro método que vá utilizar deste de se preocupar com essa exceção em questão.
![Page 13: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/13.jpg)
Checked Exceptions
• Não há uma regra para decidir em que momento do seu programa você vai tratar determinada exceção.
• Isso vai depender de em que ponto você tem condições de tomar uma decisão em relação àquele erro.
• Enquanto não for o momento, você provavelmente vai preferir delegar a responsabilidade para o método que te invocou.
![Page 14: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/14.jpg)
Tratando mais de um erro
• Com try/catch
• Com throws
![Page 15: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/15.jpg)
Lançando Exceções
• A palavra chave throw lança uma Exception.
![Page 16: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/16.jpg)
Criar a Própria Exceção
• É bem comum criar uma própria classe de exceção para controlar melhor o uso de suas exceções.
• Obrigar quem chamar o método a usar try/catch ou throws
throw throws Try/catch
Exceção Própria
![Page 17: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/17.jpg)
Finally...
• Os blocos try e catch podem conter uma terceira cláusula chamada finally que indica o que deve ser feito após o término do bloco try ou de um catch qualquer.– algo que é imprescindível de ser executado, caso o que
você queria fazer tenha dado certo, ou não– O caso mais comum é o de liberar um recurso no finally,
como um arquivo ou conexão com banco de dados, para que possamos ter a certeza de que aquele arquivo (ou conexão) vá ser fechado, mesmo que algo tenha falhado no decorrer do código.
![Page 18: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/18.jpg)
Finally
![Page 19: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/19.jpg)
Exercício
![Page 20: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/20.jpg)
Exercício• Considere um jogo de palavras em que o usuário deve adivinhar
a palavra correta.• Cada palavra possui uma dica e o nome da palavra.• Nesse jogo, há uma interface gráfica em swing que possui um
Jlabel com a dica da palavra a ser adivinhada, um JTextField em que a palavra a ser adivinhada será digitada e um Jbutton para confirmar se a palavra digitada está correta.
• Crie na classe Palavra um método VerificaPalavra que verifica se a palavra digitada pelo usuário está correta. Esse método deve lançar exceção caso a palavra seja incorreta.
• Crie uma exceção, que vai ser disparada no seguinte caso:– PalavraIncorretaException – é lançada quando o usuário errar a
palavra a ser adivinhada
![Page 21: Java: Excecoes e Tratamento de Erros](https://reader034.vdocuments.mx/reader034/viewer/2022042610/58a0e0e91a28abeb378b6c2b/html5/thumbnails/21.jpg)
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia