• 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

[email protected]

Leonardo Freitas

21-7819-2047 e 21-9653-4620

[email protected]

(66)

Tratamento de Exceções

Referências

Documentos relacionados

Quanto à organização e funcionamento do PCT, é comum entre os coordenadores considerar, como descentralização do programa, a realização de tratamento diretamente observado (DOTS)

Observação: A HP-12C não calcula o logaritmo decimal diretamente, daí o artifício. A identificação das teclas na codificação do programa é baseada num tratamento matricial para o

O presente trabalho tem por objetivo tratar da problemática acerca da competência para processar e conceder a licença ambiental pressuposto necessário para a execução de

A tecnologia de informação é o conjunto de tecnologias para se coletar dados, processar, armazenar (banco de dados), tratar dados (algoritmos), recuperar informação,

O Programa Nacional de Controle da TB (PNCT), criado em 1975, tem implementado a estratégia de Tratamento Diretamente Observado de Curta Duração (DOTS), que

• O circuito dos rolos de alimentação estão projetados para alimentar diretamente os picadores. • Todos os rolos de alimentação estão sincronizados no mesmo circuito

Captura de Exceções As exceções lançadas durante a execução das instruções de um método podem ser capturadas pelo próprio programa, ou, em último caso, pelo ambiente de

¨ Captura de Exceções As exceções lançadas durante a execução das instruções de um método podem ser capturadas pelo próprio programa, ou, em último caso, pelo ambiente