Você está na página 1de 34

Aula 06

Tratamento de exceo e Fluxo de Dados

Pauta
Tratamento de exceo Lanando excees Hierarquia das excees: Excees verificadas Excees no verificadas Declarando novos tipos de excees Assertivas

Tratamento de exceo
Faa o cdigo 01 do material Tente informar ZERO no denominador O que aconteceu?

Tratamento de exceo
Todo cdigo que pode lanar exceo deve ficar dentro do bloco try; Dentro do bloco catch fica o cdigo que deve ser executado quando alguma exeo for lanada; Ordem de colocao do catch try{ ... codigo ...} catch{

Tratamento de exceo
try{ ... codigo ...} catch(TipoExcecao e){ ... codigo ... }

Tratamento de exceo
J vimos que quando uma parte do cdigo lana uma exceo a execuo interrompida; O que fazer quando for necessrio executar algum cdigo, mesmo quando ocorrer excees, como por exemplo: Fechamento de arquivos Fechamento de banco de dados Descarga de recursos

Tratamento de exceo
try{ ... codigo ...} catch(TipoExcecao e){ ... codigo ... }finally{ ... codigo ... }

Tratamento de exceo
O java garante que um bloco finally executar se uma exceo for lanada; Existe apenas um bloco finally para cada try; No obrigatrio; Sempre ser executado, sendo ou no lanada uma exceo;

Lanando excees
Quando for necessrio lanar uma nova exceo utilizamos a palavra chave: throw; Todo mtodo que lanar uma exceo deve utilizar a palavra chave throws para tornar explcito quais excees este mtodo lana. Exceo verificada

Hierarquia das excees:


Throwable

Exception

Error

Hierarquia das excees:


Throwable

Exception

Error

OutOfMemoryError

...

Hierarquia das excees:


Throwable

Exception

Error

RuntimeException

... ...

OutOfMemoryError

...

NullPointerException

Hierarquia das excees:


Throwable

Exception

Error

RuntimeException

...

OutOfMemoryError

...

NullPointerException

...

Verificado em tempo de execuo

Hierarquia das excees:


Throwable

Exception

Error

RuntimeException

...

OutOfMemoryError

...

NullPointerException

...

Verificado em tempo de compilao

Hierarquia das excees:


Mtodos da classe Throwable:
printStackTrace(); getStackTrace(); getMessage(); ... outros ...

Excees verificadas
So excees que devem ser tratadas obrigatoriamente; So verificadas em tempo de compilao; Tratamos de duas formas: NO herdam de RunTimeException try ... catch throws

Excees no verificadas
No so verificadas em tempo de compilao So verificadas em tempo de execuo; So subclasses da classe RuntimeException;

Exemplo
Faa o exemplo do cdigo 02

Declarando novos tipos de excees


Todas as excees devem ser do tipo Trowable; Se extendermos a classe Exception teremos exees verificadas em tempo de compilao; Se extendermos a classe RuntimeException teremos exees verificadas em tempo de execuo;

Exemplo
Faa o exemplo do cdigo 03

Assertivas
Utilizadas para auxiliar o programador a detectar bugs na implementao; assert expressao; Lana uma exceo do tipo AssertionError se a expresso for false; assert expressao1: expressao2; Lana uma exceo do tipo AssertionError com expressao2 como mensagem se a expresso1 for false;

Assertivas
Java 1.4 Parmetros de execuo: -ea Exemplo cdigo 04

Arquivos e fluxos

Pauta
Arquivos e fluxos Classe File Escrevendo em arquivos Lendo em arquivos JfileChooser Acesso aleatrio Serializao de objetos

Arquivos e fluxos
Tipos de fluxo:
Arquivos Rede STREAM

Cada arquivo visto como um fluxo;


Fluxos baseados em bytes: Fluxos baseados em caracteres;

Classe File
Recupera informaes sobre arquivos ou diretrios; Alguns mtodos teis canRead(); exist(); getName(); getPath(); etc...

Escrevendo em arquivos
A classe Formatter Mtodo format(); aceita formatao Mtodo close(); fecha o fluxo Existem outras maneiras de escrever em um arquivo;

Lendo em arquivos
A classe Scanner O construtor Scaner( new File(...)) Mtodo hasNext() Mtodo next(); Mtodo close(); Existem outras formas de ler um arquivo

JFileChooser
Mtodos: showSaveDialog(); getSelectedFile(); Campos: CANCEL_OPTION

Acesso aleatrio
Permite leitura e escrita em arquivos RandomAccessFile

Serializao de objetos
A interface Serializable; A classe ObjectOutputStream Mtodo writeObject(); A classe ObjectInputStream Mtodo readObject();

Serializao de objetos
Todos os objetos com campos serializaveis podem ser serializados; Palavra-chave transient;

DVIDAS ??

Fim

Você também pode gostar