• Nenhum resultado encontrado

TratamentodeExceçõesemJAVA

N/A
N/A
Protected

Academic year: 2021

Share "TratamentodeExceçõesemJAVA"

Copied!
66
0
0

Texto

(1)

Tratamento de Exceções em JAVA

(throw e throws)

ALBERTO WILLIAN MASCARENHAS

(2)

Tratamento de Exceções

Uma exceção é uma indicação de que um

problema ocorreu durante a execução do

programa

(3)

Tratamento de Exceções

Alguns exemplos comuns de exceções são:

um subscrito de array fora dos limites,

estouro aritméticos (isto é, um valor fora do

intervalo representável de valores),

divisão por zero,

parâmetros de métodos inválidos e

esgotamento de memória.

(4)

Tratamento de Exceções

Um aplicativo pode gerar erros:

Ao receber entradas inválidas, ou seja, as quais não se

esperavam;

Ao realizar um processamento (cálculo, escrita de

valores, entre outros) incorreto;

Quando o aplicativo depender de outros dispositivos

(servidores, sinal da rede, entre outros, discos) que

estão inacessíveis ou falhos no momento que

(5)

Tratamento de Exceções

O tratamento de exceções é utilizado em

situações em que o sistema pode

recuperar-se do mau funcionamento que causa a

exceção. O procedimento de recuperação é

chamado de

tratador de exceções

(6)

Tratamento de Exceções

Quando deve ser utilizado o tratamento de

exceções

Para processar apenas situações excepcionais em

que um método é incapaz de completar sua tarefa

por razões que ele não pode controlar

Para processar exceções de componentes do

programa que são projetados para tratar essas

exceções diretamente

(7)

Tratamento de Exceções

Quando deve ser utilizado o tratamento de

exceções

Para processar componente de software como

métodos, bibliotecas e classes que provavelmente

serão amplamente utilizadas e nos quais esses

componentes não podem tratar suas próprias

exceções

(8)

Tratamento de Exceções

Quando deve ser utilizado o tratamento de

exceções

Em projetos grandes, para tratar exceções de uma

maneira uniforme em todo projeto.

(9)

Tratamento de Exceções

Classe Throwable

É a superclasse de todos os erros e exceções em

Java. Somente os objetos instanciados dessa

classe ou de usa subclasses podem ser

tratados pela Máquina Virtual Java ou pela

instrução trow

(10)

Tratamento de Exceções

(11)

Tratamento de Exceções

A classe Error

é reservada a erros do sistema em tempo de

execução, os quais o programa não tem

controle

A classe Exception

trata de erros sobre os quais o programa Java

tem controle e podem ser manipuladas pelo

programador;

(12)

Tratamento de Exceções

Categorias de Exception:

Exceções verificadas;

(13)

Tratamento de Exceções

Categorias de Exception:

Exceções verificadas

;

Há casos onde o programa pode falhar. Assim, é

importante que o trecho onde há possibilidade da

falha ocorrer seja necessariamente verificado.

Exemplo: um trecho do programa solicita que

informações sejam gravadas em disco. Como é

possível que haja falha (disco cheio, por exemplo), é

importante verificar se a operação foi bem-sucedida;

(14)

Tratamento de Exceções

Categorias de Exception:

Exceções verificadas

;

Exceções verificadas são aquelas que recebem

tratamento, caso falhas ocorram no trecho do código

observado;

(15)

Tratamento de Exceções

Exceções Verificadas

Nesse caso o tratamento de exceções é obrigatório,

Para conseguir compilar o programa, você deve

tratar a exceção.

(16)

Tratamento de Exceções

São subclasses de RuntimeException.

Não exigem tratamento, ou seja, o

try/catch

é

opcional.

(17)

Tratamento de Exceções

Categorias de Exception: Exceções não-verificadas;

Referem-se a erros, falhas que não exigem verificações do

compilador, pois, nunca em uma operação normal elas

ocorreriam, salvo em casos de erros Lógicos;

Exemplo: um índice inválido pode causar erro ao acessar um

array. Sabemos que este erro é de lógica e, portanto, evitável.

O compilador não verifica tal situação pois, normalmente, ela

não aconteceria. Mas, se acontecer, será trabalhada com

(18)

Tratamento de Exceções

Exceções verificadas

Caso um método possa causar algum erro, será necessário

cercar sua execução de cuidados;

Desta forma, no projeto do método, deve-se impor que

seja feita a verificação quando ele for utilizado;

Usa-se a cláusula throws para definir que o método terá

que ser verificado quanto a possíveis falhas;

Depois, o compilador exigirá que ele seja cercado pela

cláusula try-catch

(19)

Tratamento de Exceções

try

{

//código protegido

}

catch

(UmaExcecao e) {

//faça alguma coisa

}

catch

(SegundaExcecao e) {

//faça outra coisa

}

finally

{

//opcional

//por fim, libere os recursos

}

(20)

Tratamento de Exceções

(21)

Tratamento de Exceções

Estrutura

try/catch

É importante notar no código anterior, a utilização

da cláusula try-catch:

Esta cláusula envolve o código que possivelmente pode

gerar uma exceção, dando a ela um tratamento adequado

caso a exceção ocorra;

A cláusula try

significa – tente fazer as ações a seguir;

A cláusula catch

significa – se houver exceção, apanhe-a

(22)

Tratamento de Exceções

(23)

Tratamento de Exceções

Estrutura

try/catch

Aqui temos dois blocos catch: o primeiro trata a

exceções aritméticas e o segundo cuida de exceções

gerais.

Observe que o bloco que trata as exceções específicas

(24)

Tratamento de Exceções

(25)

Tratamento de Exceções

Disparando exceções

thow

Exceções podem ser geradas explicitamente por

meio da exceção throw

(26)
(27)

Tratamento de Exceções

Disparando exceções

thow

A instrução throw, que chama explicitamente a

exceção, linha 14

(28)

Tratamento de Exceções

(29)

Tratamento de Exceções

(30)

Tratamento de Exceções

Exceções Encadeadas

1. O método main() chama o método TestaExcecao()

dentro de uma estrutura try-catch

2. No método TestaExcecao() não existe try-catch;

3. O erro será tratado no método main()

(31)

Tratamento de Exceções

Mecanismo de pilha

Se uma exceção não é tratada no bloco

try-catch

atual, ela é propagada para o método chamador

Se uma exceção volta até o método

main

e não é

tratada lá, o

programa é terminado de forma

(32)

Tratamento de Exceções

(33)

Tratamento de Exceções

(34)

Crie a classe TesteArray com um loop (for)

lendo três elementos.

Tratamento de Exceções

Tratamento de Exceções

(35)

Tratamento de Exceções

Vamos forçar um erro utilizando um índice

maior que o permitido.

(36)

Tratamento de Exceções

No console da IDE deve ser mostrada essa mensagem.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

At com.javabasico.tratamentodeexcecoes.TesteArray.main(TesteArray.java:8)

O próximo passo é adicionar o tratamento de exceções

(try/catch).

Devemos proteger somente a linha que apresenta que tem

erro em potencial, no caso,

System.out.println("Valor: " + lista[i])

(37)
(38)

Tratamento de Exceções

A Cláusula

thows

A cláusula throws lista as exceções que podem

ser disparadas para um determinado método.

As exceções devem ser especificadas na

definição do método

(39)

Tratamento de Exceções

(40)

O tratamento de exceção é composto

basicamente de três passos:

criação

,

declaração

e

gerenciamento

da exceção.

Atenção, pois todos os passos são essenciais

para o tratamento das exceção.

Tratamento de Exceções

(41)

As nossas exceções personalizadas serão subclasses de

Exception.

Uma exceção pode conter preciosas informações sobre o

comportamento do sistema.

Todas as vezes que alguma situação diferente acontecer, o

usuário deve ser informado.

Tratamento de Exceções

(42)

Quando você escreve um método potencialmente

perigoso, deve declarar que esse método pode levantar

alguma exceção com o

throws

.

A maneira mais simples de lançar uma exceção é

usando a palavra-chave

throw

.

Tratamento de Exceções

(43)

Quando qualquer classe chama um método

que declara exceções, podemos gerenciar

essa exceção com a utilização do

try/catch

e,

opcionalmente,

finally

.

Tratamento de Exceções

(44)

No nosso exemplo criaremos exceções

não-verificadas.

Exemplo: Locadora - Filme

(45)

Exemplo: Locadora - Cliente

(46)

Exemplo: Locadora - Locadora

(47)

Exemplo: Locadora - TesteLocadora

(48)

Para criar uma exceção não-verificada para sua

aplicação devemos criar uma subclasse de

RuntimeException, seguindo o modelo a seguir.

A sintaxe super(mensagem) passa a mensagem de

erro para a superclasse (RuntimeException).

Essa mensagem será informada mais tarde na

aplicação.

Criando exceções personalizadas

(49)

ClienteComRestricaoException

FilmeJaLocadoException

(50)

Quando queremos lançar exceções

personalizadas utilizamos a palavra reservada

throw, passando a respectiva mensagem.

Quando o nome do cliente for Marco a

locadora não vai poder emprestar o filme.

Lançando exceções – throw

(51)

Locadora: Lançamento de exceção

(52)

Rode novamente a classe TesteLocadora.

Em seguida, adicione a próxima exceção.

(53)

Para evitar que a aplicação apresente esse erro, devemos

proteger o código problemático com um try/catch.

Tratamento de Exceções

(54)

Para evitar que a aplicação apresente esse erro, devemos

proteger o código problemático com um try/catch.

Tratamento de Exceções

(55)

No próximo exemplo veremos as exceções

verificadas.

Todas serão subclasse de Exception.

Exceções verificadas

Tratamento de Exceções

(56)

Exceções verificadas

ContaCorrente

(57)

Exceções verificadas

TerminalBancario

(58)

Tire o

try/catch

e recompile o TerminalBancario.

Analise o resultado.

Esse resultado era esperado?

Qual dos três passos está faltando?

Tratamento de Exceções

(59)

Tratamento de Exceções

(60)

Tratamento de Exceções

(61)

Tratamento de Exceções

Tarefa - sala

Crie as seguintes classes de exceção:

ValorAbaixoException, ValorAcimaException

e ValorMuitoAcimaException

(62)

Crie a classe ValidaNumero com um novo

método chamado analisaValor(double

valorAnalisado)

Tratamento de Exceções

(63)

Crie a classe TestaValidaNumero

Para cada faixa de valores descritas abaixo, deverá

lançar as respectivas exceções mostrado mensagens

para o usuário.

Ao final, ocorrendo exceções ou não, deverá mostrar

uma mensagem para o usuário informando que a

análise foi terminada.

Menor ou igual a 0: ValorAbaixoException

Maior que 100 e menor que 1000: ValorAcimaException

Tratamento de Exceções

(64)

Tratamento de Exceções

Tarefa - casa

Fazer um resumo sobre

Assertions e Logging

(65)

Tratamento de Exceções

Créditos

Professor: Constantino Dias da Cruz Neto

IFMT

CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET

MODALIDADE A DISTÂNCIA - TSIAD

Marco Antonio,

Arquiteto de Software – TJDF

ma@marcoreis.net

Leonardo Freitas

21-7819-2047 e 21-9653-4620

lfreitas@bcc.ic.uff.br

(66)

Tratamento de Exceções

Referências

Documentos relacionados

Ao final será exibido o tempo total de cada disciplina, e no alto o total de tempo em sala de aula e o total geral com ensino... Carga Horária Semanal Total Registrada 40 h

É através do menu de programações que o usuário aprende e apaga controles remotos e sensores, configura o modo de operação dos relês, altera senha mestre e

O Patrimônio Histórico, concebido aqui como uma relação entre memória social (CARLAN, 2008, p.82) e soma dos bens culturais, agrega conjuntos de informações,

107 State Research Center of Russian Federation, Institute for High Energy Physics, Protvino, Russia 108 University of Belgrade, Faculty of Physics and Vinca Institute of

Manual / Seco Com extracção de pó, 12–162 mm Todas as direcções Manual / Água Sem sistema colector de água, 12– 62 mm Excepto na vertical Manual / Água Com sistema

Você pode usar o menu Iniciar para fazer essas atividades comuns: • Iniciar programas ou aplicativos Windows® • Abrir programas comumente usados ou aplicativos Windows® •

Desta forma, este trabalho teve como objetivo, à aplicação de conhecimento e técnicas sobre SR, SIG, geoprocessamento e incêndios florestais, para a elaboração do índice de Perigo

The groups were characterized as Control (CG, n=10) where the animals were kept in cages and spared from any intervention; Immobi- lized (IG, n= 10) where the animals had their