java: excecoes e tratamento de erros

21
Exceções e Tratamento de Erros Arthur Emanuel de Oliveira Carosia

Upload: arthur-emanuel

Post on 13-Feb-2017

35 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Java: Excecoes e Tratamento de Erros

Exceções e Tratamento de Erros

Arthur Emanuel de Oliveira Carosia

Page 2: Java: Excecoes e Tratamento de Erros

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

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

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

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

Exceções mais comuns

• Divisão por zero

• Correção

Page 7: Java: Excecoes e Tratamento de Erros

Exceções mais comuns

• Acessar posição inválida de array

• Correção

Page 8: Java: Excecoes e Tratamento de Erros

Exceções mais comuns

• Referência para null tentando ser acessada

• Correção

Page 9: Java: Excecoes e Tratamento de Erros

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

• 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

Checked Exceptions

• Solução 1– tratar com o try e catch

Page 12: Java: Excecoes e Tratamento de Erros

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

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

Tratando mais de um erro

• Com try/catch

• Com throws

Page 15: Java: Excecoes e Tratamento de Erros

Lançando Exceções

• A palavra chave throw lança uma Exception.

Page 16: Java: Excecoes e Tratamento de Erros

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

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

Finally

Page 19: Java: Excecoes e Tratamento de Erros

Exercício

Page 20: Java: Excecoes e Tratamento de Erros

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

Exceções e Tratamento de Erros

Arthur Emanuel de Oliveira Carosia