Você está na página 1de 28

Programação Orientada a Objetos

Tratamento de erros e exceções


Programação em Computadores

Cristian Cechinel
Tratamento de Erros e Exceções

• Durante a execução de um programa podem ocorrer


erros que causam a sua interrupção ou produzem
comportamentos inesperados

• O tratamento de exceções é projetado para processar


condições excepcionais ajudando a melhorar a tolerância
a falhas de um programa
Tratamento de Erros e Exceções

• Exceções em Java são objetos de classes derivadas da


superclasse Exception

• Alguns exemplos de exceções são o acesso a uma


posição inexistente em um Array (fora dos limites),
estouro aritmético (valor fora do intervalo de valores
representáveis), divisão por zero, parâmetros de métodos
inválidos e esgotamento de memória
Tratamento de Erros e Exceções

• O tratamento de exceções pode ser visto como outro


meio de retornar o controle de um método ou sair de um
bloco de código.
Tratamento de Erros e Exceções

• Algumas exceções são causadas por erros do usuário,


outras por erros de programação e outras por falhas na
utilização de determinado recurso;
• Em Java existem duas categorias de exceções:
– Checked exceptions: são exceções conhecidas em tempo de
compilação, sendo assim, o compilador obriga o tratamento
das mesmas;
– Unchecked exceptions: o compilador não força o tratamento
deste tipo de exceção. Exemplos são a classe
RuntimeException e suas subclasses e a classe Error.
Tratamento de Erros e Exceções

• Todas as classes de exceção são subclasses da classe


java.lang.Exception.
• A classe Exception é uma subclasse da classe
Throwable;
• Além de Exception existe a classe Error que também é
derivada de Throwable;
• Condições de erro normalmente ocorrem em caso de
falhas severas, as quais estão fora do controle de
programas Java, por exemplo, a falta de memória.
Tratamento de Erros e Exceções
Exemplo de Exceção

• Ao tentar acessar a posição de número 2 de um vetor que


somente possui as posições 0 e 1, o programa lançará uma
Exceção do tipo ArrayIndexOutOfBoundsException
Exemplo de Exceção

• Ao tentar acessar a posição de número 2 de um vetor que


somente possui as posições 0 e 1, o programa lançará uma
Exceção do tipo ArrayIndexOutOfBoundsException
Exemplo de Exceção

• Perceba que o programa é interrompido e não executa a linha


que deveria imprimir na tela a mensagem "Término do Programa"
Capturando Exceções

• Um método captura uma exceção através das palavras


reservadas try e catch;
• Um bloco try/catch é declarado ao redor do código que pode
gerar uma exceção;
• O código entre um bloco try/catch é visto como um código
protegido.
try {
//Código protegido
} catch (ExceptionName e1) {
//bloco de captura
}
Capturando Exceções
• A exceção gerada no exemplo anterior pode ser capturada
utilizando try/catch, evitando que o programa finalize de maneira
abrupta e permitindo o tratamento da exceção encontrada
Múltiplos blocos

• Um bloco try pode ser seguido por múltiplos métodos


catch.
try {
//Código protegido
} catch (ExceptionType1 e1) {
//bloco Catch
} catch (ExceptionType2 e2) {
//bloco Catch
} catch (ExceptionType3 e3) {
//bloco Catch
}
Múltiplos blocos
• No código a seguir, o bloco try/catch trata dois tipos de Exceções
possíveis.
Múltiplos blocos
• No código a seguir, o bloco try/catch trata dois tipos de Exceções
possíveis.
– InputMismatchException: Quando o tipo da entrada é diferente do tipo
que se está tentando ler (nesse caso um valor inteiro)
Exercícios
• O código abaixo lança uma exceção (propositalmente) e
interrompe sua execução. Utilizando o tratamento de exceções,
corrija a classe com o objetivo de não parar sua execução. OBS::
A Exception lançada é ArrayIndexOutOfBoundsException.
Múltiplos blocos
• No código a seguir, o bloco try/catch trata dois tipos de Exceções
possíveis.
– ArithmeticException: Para exceções envolvendo operações aritméticas,
nesse caso, possível divisão por zero
Múltiplos blocos
Múltiplos blocos
Exercícios
• O código abaixo lança uma exceção (propositalmente) e
interrompe sua execução. Utilizando o tratamento de exceções,
corrija a classe com o objetivo de não parar sua execução.
– A Exception lançada é ArrayIndexOutOfBoundsException.
Exercícios
• Identifique as partes problemáticas do código abaixo e reescreva utilizando tratamento de
exceções. Ou seja, devem ser identificadas todas as exceções que podem ser levantadas e,
para cada uma, deve ser dado o tratamento adequado que, nesse exercício, significa alertar
o usuário quanto ao problema. Entretanto, nesse programa a leitura dos valores deve ser
feita, mesmo que para isso o usuário tenha que tentar informar várias vezes os valores na
mesma execução do programa.
FileNotFoundException

Ao trabalhar com a leitura


e escrita de arquivos é
possível tratar exceção de
arquivos inexistentes
utilizando
FileNotFoundException
FileNotFoundException

Ao trabalhar com a leitura


e escrita de arquivos é
possível tratar exceção de
arquivos inexistentes
utilizando
FileNotFoundException
FileNotFoundException

FileNotFoundException
é uma subclasse de
IOException

Considerando isso,
também é possível tratar
a exceção de entrada e
saída usando IOException
FileNotFoundException

Também é possível usar o


catch para ambos os tipos
de Exceções

FileNotFoundException
IOException
FileNotFoundException

Também é possível usar o


catch para ambos os tipos
de Exceções

FileNotFoundException
IOException
Exercícios

• Realize o tratamento da exceção na abertura de arquivos


para os exercícios anteriormente resolvidos
Referências
• Deitel
• Alguns slides adaptados da professora Priscila Cadorin Nicolete

Você também pode gostar