Bruno Rafael de Oliveira Rodrigues
Tratadores de Excessões
A exceção é uma indicação de que um erro ou
problema aconteceu durante a execução de uma
aplicação.
Essas exceções são aplicadas a trechos de código
que apresentam um grau maior de possibilidade de
que um erro possa vir a acontecer.
Ao invés de um determinado programa ser
finalizado, devido a uma falha, e possível realizar o
tratamento de tais exceções, buscando manter a
execução perfeita do programa, sem prejuízo algum
ao usuário
Cláusulas try / catch / finally
try{
// escreva as instruções passíveis de gerar uma
exceção neste bloco
} catch (<tippdaexceção> <nomdavariavel>){
// escreva a ação que o seu programa fará caso
ocorra uma exceção de um determinado
} finally {
// escreva a ação que o seu programa executará
caso ocorra ou não um erro ou exceção
}
Exceções geradas durante a execução do bloco try
podem ser detectadas e tratadas num bloco catch.
O código no bloco finally é sempre executado,
ocorrendo ou não a exceção.
Sem utilizar exceção
Utilizando a Exceção
Podem existir quantas clausulas catch forem
necessárias para o perfeito tratamento da aplicação.
Podem ocorrer situações em que e desejável que
sejam realizadas tarefas, mesmo após alguma
falha, ou mesmo com o perfeito funcionamento da
aplicação. Nesses casos, entra em cena a
declaração da clausula finally em que pode ser
definido o bloco que ira ser executado.
Exception
Exception possui por sua vez dezenas de
subclasses pré-definidas na Plataforma Java, mas
uma delas é especial: RuntimeException. Esta
exceção indica erros em tempo de execução,
resultantes de erros de configuração ou de dados
inválidos sendo processados pela aplicação.
ClassCastException
ClassCastException (erro na conversão forçada de tipo)
ArithmeticException (cálculos inválidos, como dividor por
zero) NullPointerException, IllegalArgumentException,
IndexOutOfBoundsException e SecurityException são
exemplos de subclasses de RuntimeException.
Principais Exceções
Quando usar exceções
O tratamento de exceções deve ser utilizado nas
seguintes situações:
• processar situações excepcionais nas quais um
método seja incapaz de terminar sua função por
razoes que fogem a seu controle;
• processar exceções de componentes que não
estão projetados para realizar tais tarefas
diretamente;
• em projetos de grande porte, para tratar exceções
de maneira uniforme em todo o projeto.
Throws
É a responsável por tratar os possíveis erros que
venham a acontecer, porem a clausula throws lista
as possíveis exceções que podem ser disparadas
tipoDeRetorno nomeDoMetodo() throws
TiposDeExcecao1, TipoDeExcecao2, ...
{
//corpo do metodo
}
Sempre definida para um método completo de uma
classe, logo a qualquer momento dentro desse
método pode ocorrer uma exceção é então as
classes definidas serão executadas
Exemplo
public class TestaException {
public static void main(String[] args) throws
FileNotFoundException {
new java.io.FileInputStream("arquivo.txt");
}
Exceções não Monitoradas
Não exigem tratamento com o uso de diretivas
try/catch/finnaly, permitindo seu envio implícito para
o contexto superior.
Todas as exceções não monitoradas são subclasses
de java.lang.RuntimeException
Exemplo
Exceções Monitoradas
É exigido tratamento obrigatório com try/catch/finally
ou a declaração explícita de seu lançamento para
contexto superior por meio da cláusula thows.
Exemplo
Tratamento Qualificado de
Exceções
Qualquer exceção pode ser tratada de modo
genérico por meio de um bloco try/catch que apanhe
a classe de exceção Exption.
Mas o controle de exceções pode ser mais
sofisticado com o encadeamento de múltiplos blocos
catch.
Não Qualificado
Qualificado
Pesquise e estude
Como fazer exceções com herança?
Qual a diferença entre throw e throws?
O que é um stack trace e um printStackTrace?
O que fazem as classes Throwable, Exception e
Error?
Sites+
http://www.hwn.com.br/pej/ -> Livro Think in Java
http://javafree.uol.com.br/index.jf
http://www.guj.com.br/ ->tem um dos maiores forum
de Java, cadastra-se e debata também