Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia
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.
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.
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.
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}
Exceções mais comuns
• Divisão por zero
• Correção
Exceções mais comuns
• Acessar posição inválida de array
• Correção
Exceções mais comuns
• Referência para null tentando ser acessada
• Correção
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
• Abrir um arquivo sem tratar a Checked Exception
• Resulta em erro
• Código não é compilado
Checked Exceptions
Checked Exceptions
• Solução 1– tratar com o try e catch
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.
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.
Tratando mais de um erro
• Com try/catch
• Com throws
Lançando Exceções
• A palavra chave throw lança uma Exception.
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
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.
Finally
Exercício
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
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia