SlideShare uma empresa Scribd logo
1 de 52
TRATAMENTO DE
ERROS
Linguagem de Programação II
Ciência da Computação
Introdução
• Exceção
• Indicação de um problema que ocorre durante a
execução de um programa
• O problema ocorre raramente
• A regra é que uma instrução deve executar de
modo correto
• A exceção à regra é quando isso não ocorre
• O tratamento de exceções permite que um
programa continue executando
Visão Geral
• Tratamento de exceções
• Permite remover o código de erro da linha
principal de execução do programa
• Cada programador pode escolher a exceção que
quer tratar
• Os programas tornam-se mais robustos quando
os erros não são negligenciados
Exemplo 1 e 2
• Divisão por zero
• Rastreamento de pilha
• Linhas de informações que são exibidas em
resposta a uma entrada inválida. Incluem o nome
da exceção em uma mensagem descritiva que
indica o problema que ocoorreu, e a pilha
completa de chamada de método no momento
em que a exceção ocorreu.
Exemplo 1 e 2
• Java não permite a divisão por zero entre números
inteiros
• Java permite a divisão por zero com valores de
ponto flutuante
• java.lang.ArithmeticException: / by zero
• Indica que essa exceção ocorreu como resultado
de uma tentativa de divisão por zero
• Ponto de lançamento
• Linha superior da cadeia de chamadas. Ponto
incial onde a exceção ocorre
Exemplo 1 e 2
• InputMismatchException
• Ocorre quando o método Scanner nextInt recebe
uma String que não representa um número
inteiro válido
• Em alguns casos, o aplicativo java continua
executando mesmo ocorrendo uma exceção. É
preciso tratar isto também para que resultados
inesperados não ocorram
Bloco TRY
• Throw = lançar
• Inclui o código que pode lançar uma exceção e o
código que não deve ser executado se ocorrer uma
exceção.
• Se ocorrer uma exceção:
• O código restante do bloco try será pulado e o
controle vai pra o bloco catch
Bloco Catch
• CATCH = captura
• BLOCO CATCH
• Contém o código que captura e trata a
exceção, permitindo que o aplicativo java continue
executando
• Exceção não capturada
• É uma exceção à qual não há nenhum bloco catch
correspondente
Bloco Catch
 Se ocorrer uma exceção em um bloco try:
 O bloco catch captura a exceção
 O bloco catch que será executado é o bloco
catch cujo o tipo é correspondente ao tipo da
exceção que ocorreu
 Todo bloco CATCH exibe uma mensagem de erro
e pede para o usuário tentar novamente
Modelo de terminação
• Se ocorrer uma exceção em um bloco TRY:
• Ele é terminado
• O controle vai para o primeiro BLOCO CATCH
seguinte que tem o tipo correspondente
• O controle de programa não volta ao ponto de
lançamento do bloco TRY
• O controle de programa retoma depois do último
bloco CATCH
• Depois de uma exceção ser tratada:
• O controle é retomado logo em seguida ao ponto
de lançamento da exceção
Escopo
• Quando um bloco try termina:
• As variáveis locais declaradas no bloco saem de
escopo e são destruídas

• Quando um bloco catch termina:
• As variáveis locais declaradas dentro do bloco
catch, incluindo os parametros de exceção desse
bloco, também saem de escopo e são destruídos
Clausula THROWS
• Especifica as exceções que o método lança
• Aparece depois da lista de parâmetros do método e
antes do corpo do método
• Contém uma lista das exceções separadas por vírgulas
que o método lançará se ocorrer um problema
• Essas exceções podem ser lançadas por instruções no
corpo do método ou por métodos chamados no corpo
• Um método pode lançar exceções das classes listadas
em sua cláusula throws ou de suas subclasses
Quando usar?
• O tratamento de exceções é projetado para
processar erros síncronos, que ocorrem quando
uma instrução é executada.

• O tratamento de exceções não é projetado para
processar problemas associados com os eventos
assíncronos, que ocorrem paralelamente com o
fluxo
de
controle
do
programa
e
independentemente dele.
http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html

Hierarquia de Exceções
Hierarquia de Exceções
Lançada
quando
um
aplicativo tenta usar null em
um caso em que é exigido
um objeto.
Hierarquia de Exceções
Lançada para indicar que um índice
de algum tipo (como para uma
matriz, para uma string, ou um
vetor) está fora da faixa definida.
Hierarquia de Exceções
• Todas as classes de exceção do JAVA herdam, direta ou
indiretamente, da classe EXCEPTION.
• THROWABLE
• Subclasse de OBJECT e superclasse de EXCEPTION
• EXCEPTION e ERROR
• Representam situações excepcionais que podem
ocorrer em um programa Java e podem ser
capturadas pelo aplicativo
Exceções Verificadas
• Obriga a quem chama o método ou o construtor a
tratar essa exceção
• O compilador checará se ela está sendo
devidamente tratada
• Exceções verificadas tem que ser tratadas ou
lançadas!
Exceções Não Verificadas
• São os problemas que provavelmente poderiam
ser evitados pelo programador.
• É por esse motivo que o JAVA não te obriga a usar
o try/catch nessas exceptions.
• O compilador não checa se você está tratando
essas exceções.
ERROR
• Representam situações anormais que poderiam
acontecer na JVM
• ERROR acontece raramente e não devem ser
capturados por aplicativos
• Todas as classes que herdam da classe ERROR são
Exceções Não Verificadas
RuntimeException
•A
exceção
RuntimeException
e
suas
subclasses, são exceções lançadas pela JVM.
• As exceções que são lançadas pela JVM são
exceções não verificadas
• Todos os tipos de exceção que são subclasses
diretas ou indiretas da classe RuntimeException
são exceções não verificadas
Exception
• A exceção EXCEPTION e suas subclasses, são exceções
programáticas
• Todas as classes que herdam da classe EXCEPTION mas
não da classe RuntimeException são exceções
verificadas
• Exceções Programáticas
• São aquelas criadas por um aplicativo ou por um
desenvolvedor de API.
Exceções Não Verificadas e
Exceções Verificadas
• As classes de exceção são definidas como classes
verificadas
quando
são
consideradas
suficientemente importantes para a captura ou
declaração em uma clausula throws
• Fonte:
http://www.caelum.com.br/apostila-javaorientacao-objetos/excecoes-e-controle-deerros/#11-4-outro-tipo-de-excecao-checkedexceptions
Capturas de Exceções
• Se um catch for escrito para capturar objetos de
exceção de um tipo de superclasse, ele também
pode capturar todos os objetos de subclasses
dessa classe.
• É um erro de compilação capturar o mesmo tipo
de exceção em dois ou mais blocos catch
diferentes associados com um bloco try em
particular.
Capturas de Exceções
• Capturar a superclasse garante que os objetos de
todas as subclasses serão capturadas
• Um erro de compilação ocorrerá caso um bloco
catch, para um tipo de exceção de superclasse, seja
colocado ANTES de outros blocos catch que
capturam tipos de exceção de subclasse.

• Como
consequencia,
esses
blocos
não
executarão, pois o bloco da superclasse já os está
tratando.
Finally
• Programas que obtem certos tipos de recursos
devem retorna-los ao sistema explicitamente para
evitar os vazamentos de recursos.

• Exemplos: arquivos, conexões de banco de
dados, conexões de rede, etc...
• Bloco finally é opcional
Finally
try {
}
catch(tipo de exceção 1) {
}
catch(tipo de exceção 2) {
}
finally {
}
Finally
• Um bloco finally NÃO EXECUTARÁ:
• Se o aplicativo fechar antes de um bloco try
chamando o método system.exit (método que
encerra um aplicativo de forma imediata)
• Um bloco finally EXECUTARÁ:
• Se uma exceção for lançada no BLOCO TRY ou
BLOCO CATCH correspondente
Finally
• Se uma exceção ocorrer:
• O programa pula o restante do bloco try
• Se o programa capturar a exceção em um dos
blocos catch:
• O programa processa a exceção
• O bloco finally libera o recurso em seguida
• O controle do programa prossegue à primeira
instrução depois do bloco finally
Finally
• Se uma exceção não ocorrer:
• Os blocos catch são pulados
• O controle do programa prossegue para o bloco
finally
• O bloco finally libera o recurso
• O controle do programa prossegue à primeira
instrução depois do bloco finally
Finally
• Se uma exceção não puder ser capturada:
• O programa pula o restante do bloco try
• O programa prossegue para o bloco finally (que
executa)
• O programa passa a exceção para o próximo
bloco try externo
• Um bloco catch associado pode capturar a
exceção
• O bloco finally executará de qualquer
forma, mesmo que a exceção não for capturada
System.err
• Fluxo: uma sequência de bytes
• System.out: é o fluxo de saída padrão. É usado
para exibir uma saída do programa. As saídas
podem ser enviadas para o monitor de tela.
• System.err: é o fluxo de erro padrão. É usado para
exibir erros de um programa. As saídas podem ser
enviadas para um arquivo de log.
Exemplo 3
Desempilhamento de pilha
• Quando uma exceção é lançada mas não é
capturada em um escopo em particular
• A pilha de chamada de método é desempilhada
• Uma tentativa de capturar a exceção no próximo
bloco try externo é feita.
Desempilhamento de pilha
• Desempilhar a pilha de chamada de método
significa:
• O método em que a exceção não foi captura é
encerrado
• Todas as variáveis nele presentes saem de
escopo
• O controle retorna à instrução que invocou esse
método.
Desempilhamento de pilha
• Se um bloco try incluir essa instrução:
• Uma tentativa de capturar a exceção com catch é
feita
• Se um bloco try não incluir essa instrução:
• O desempilhamento ocorre novamente
• Se nenhum bloco catch capturar alguma vez essa
exceção e a exceção for verificada:
• Compilar o programa resultará em um erro
Exemplo 4
Métodos da classe Throwable
• printStackTrace
• Envia para o fluxo de erro padrão o rastreamento da
pilha
• Util para o processo de teste e depuração

• getStackTrace
• Recupera informações sobre o rastreamento de
pilha que podem ser impressas por printStackStrace
• getMessage
• Retorna a string descritiva armazenada em uma
exceção
Exemplo 5
Exceções Encadeadas
• Permitem que um objeto de exceção mantenha
informações do rastreamento de pilha completo
• As vezes um bloco catch captura um tipo de
exceção e depois lança uma nova exceção de um
tipo diferente para indicar que ocorreu uma
exceção específica no programa

• Exceções encadeadas empacotam as informações
da exceção original com as informações da nova
exceção
Exemplo 6
Precondições e PósCondições
• São os estados esperados antes e depois da
exceução de um métodos
• Facilitam as tarefas e aprimoram todo o projeto
• Diminuem os gastos com manutenção e depuração
do código
Pré Condição de um Método
• É uma condição que deve ser verdadeira quando o método
é invocado
• Descrevem parâmetros de método
• Descrevem quaisquer outras expectativas que o método
tenha sobre o estado atual de um programa
• Se
um
usuário
não
conseguir
atender
às
précondições, então o comportamento de um método é
indefinido
• Nunca você deve supor ou esperar que o comportamento
seja consistente se as précondições não forem satisfeitas
Pós Condição de um Método
• É uma condição que deve ser verdadeira depois de o
método retornar com sucesso
• Descrevem o valor de retorno
• Descrevem quaisquer outros efeitos colaterais que o
método possa apresentar
• Ao chamar um método, você pode assumir que ele cumpre
todas as suas pós conições
• Você deve documentar toda as pós condições para que os
outros programadores saibam o que esperar ao chamar o
método
Precondições e PósCondições
• EXEMPLO: Método STRING CHARAT
• Tem um parâmetro int: um índice na String

• Précondição: o método assume que INDEX é
maior que ou igual a zero e menor que o
comprimento da STRING
Precondições e PósCondições
• EXEMPLO: Método STRING CHARAT
• Póscondição:
• Caso a PRÉCONDIÇÃO seja atendida:
• Declara que o método retornará o caractere
na posição na STRING especificada pelo
parâmetro INDEX
• Caso a PRÉCONDIÇÃO não seja atendida:
•O
método
lança
uma
IndexOutOfBoundsException
Precondições e PósCondições
• O método charAt satisfaz sua póscondição desde
que o programador atenda à precondição
• DOCUMENTAÇÃO DO SOFTWARE
• Escreva as póscondições e as précondições na
especificação do seu software, se preferir, escreva
comentários em cada declaração de método
Assertivas
• Condições que devem ser verdadeiras em um
ponto particular de um método
• Ajudam a assegurar a validade de um programa
capturando BUGS potenciais
• Ajudam a identificar possíveis erros de lógica
durante o desenvolvimento
• Précondições e póscondições são dois tipos de
assertivas
Assertivas
• Pré condições: assertivas sobre o estado de um
programa quando um método é invocado
• Pós condições: assertivas sobre o estado de um
programa depois do encerramento de um método
• Assertivas
podem
comentários

ser

declaradas

como

• ASSERT: instrução para validar as assertivas
programaticamente
Assertivas
• ASSERT: avalia uma expressão BOOLEAN e
determina se ela é verdadeira ou falsa
expressão assert
• Avalia expressão e lança um AssertionError se a
expressão for false
assert expressão1 : expressão2
• Avalia
expressão1
e
lança
um
AssertionError, com expressão2 como a
mensagem de erro, se expressão1 for false
Exemplo 7
• Entrar no CMD.EXE
• Entrar no diretório onde está salvo o arquivo .class

• Java –ea AssertTest
Exercícios
• Responda em um arquivo do word e envie via
syllabus

Mais conteúdo relacionado

Mais procurados

Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções javaAntonio Oliveira
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmospronatecvja
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlex Camargo
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoRegis Magalhães
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 
Análise estruturada de sistemas - Modelo de contexto
Análise estruturada de sistemas - Modelo de contextoAnálise estruturada de sistemas - Modelo de contexto
Análise estruturada de sistemas - Modelo de contextoLuciano Almeida
 
Lista de exercicios vetores, matrizes, registros e sub-algoritmos
Lista de exercicios   vetores, matrizes, registros e sub-algoritmosLista de exercicios   vetores, matrizes, registros e sub-algoritmos
Lista de exercicios vetores, matrizes, registros e sub-algoritmosMauro Pereira
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 

Mais procurados (20)

Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
Linguagem Java
Linguagem JavaLinguagem Java
Linguagem Java
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmos
 
Algoritmos e Programação: Matrizes
Algoritmos e Programação: MatrizesAlgoritmos e Programação: Matrizes
Algoritmos e Programação: Matrizes
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 
Análise estruturada de sistemas - Modelo de contexto
Análise estruturada de sistemas - Modelo de contextoAnálise estruturada de sistemas - Modelo de contexto
Análise estruturada de sistemas - Modelo de contexto
 
Lista de exercicios vetores, matrizes, registros e sub-algoritmos
Lista de exercicios   vetores, matrizes, registros e sub-algoritmosLista de exercicios   vetores, matrizes, registros e sub-algoritmos
Lista de exercicios vetores, matrizes, registros e sub-algoritmos
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 

Destaque (7)

Pacotes
PacotesPacotes
Pacotes
 
Poo
PooPoo
Poo
 
Vetores
VetoresVetores
Vetores
 
Virus09
Virus09Virus09
Virus09
 
Square One All Practice Capability 2015 BLANK
Square One All Practice Capability 2015 BLANKSquare One All Practice Capability 2015 BLANK
Square One All Practice Capability 2015 BLANK
 
Herança
HerançaHerança
Herança
 
Matrizes
MatrizesMatrizes
Matrizes
 

Semelhante a Tratamento de erros

Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em JavaWilson Júnior
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Helder da Rocha
 
Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: ExceçõesEduardo Mendes
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em javaMarques Amaro
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 

Semelhante a Tratamento de erros (20)

JAVA - Tratamento de Erros
JAVA - Tratamento de ErrosJAVA - Tratamento de Erros
JAVA - Tratamento de Erros
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Java 13 Excecoes
Java 13 ExcecoesJava 13 Excecoes
Java 13 Excecoes
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Excecoes
ExcecoesExcecoes
Excecoes
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: Exceções
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Exceptions
ExceptionsExceptions
Exceptions
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Tratamento de erros

  • 1. TRATAMENTO DE ERROS Linguagem de Programação II Ciência da Computação
  • 2. Introdução • Exceção • Indicação de um problema que ocorre durante a execução de um programa • O problema ocorre raramente • A regra é que uma instrução deve executar de modo correto • A exceção à regra é quando isso não ocorre • O tratamento de exceções permite que um programa continue executando
  • 3. Visão Geral • Tratamento de exceções • Permite remover o código de erro da linha principal de execução do programa • Cada programador pode escolher a exceção que quer tratar • Os programas tornam-se mais robustos quando os erros não são negligenciados
  • 4. Exemplo 1 e 2 • Divisão por zero • Rastreamento de pilha • Linhas de informações que são exibidas em resposta a uma entrada inválida. Incluem o nome da exceção em uma mensagem descritiva que indica o problema que ocoorreu, e a pilha completa de chamada de método no momento em que a exceção ocorreu.
  • 5. Exemplo 1 e 2 • Java não permite a divisão por zero entre números inteiros • Java permite a divisão por zero com valores de ponto flutuante • java.lang.ArithmeticException: / by zero • Indica que essa exceção ocorreu como resultado de uma tentativa de divisão por zero • Ponto de lançamento • Linha superior da cadeia de chamadas. Ponto incial onde a exceção ocorre
  • 6. Exemplo 1 e 2 • InputMismatchException • Ocorre quando o método Scanner nextInt recebe uma String que não representa um número inteiro válido • Em alguns casos, o aplicativo java continua executando mesmo ocorrendo uma exceção. É preciso tratar isto também para que resultados inesperados não ocorram
  • 7. Bloco TRY • Throw = lançar • Inclui o código que pode lançar uma exceção e o código que não deve ser executado se ocorrer uma exceção. • Se ocorrer uma exceção: • O código restante do bloco try será pulado e o controle vai pra o bloco catch
  • 8. Bloco Catch • CATCH = captura • BLOCO CATCH • Contém o código que captura e trata a exceção, permitindo que o aplicativo java continue executando • Exceção não capturada • É uma exceção à qual não há nenhum bloco catch correspondente
  • 9. Bloco Catch  Se ocorrer uma exceção em um bloco try:  O bloco catch captura a exceção  O bloco catch que será executado é o bloco catch cujo o tipo é correspondente ao tipo da exceção que ocorreu  Todo bloco CATCH exibe uma mensagem de erro e pede para o usuário tentar novamente
  • 10. Modelo de terminação • Se ocorrer uma exceção em um bloco TRY: • Ele é terminado • O controle vai para o primeiro BLOCO CATCH seguinte que tem o tipo correspondente • O controle de programa não volta ao ponto de lançamento do bloco TRY • O controle de programa retoma depois do último bloco CATCH • Depois de uma exceção ser tratada: • O controle é retomado logo em seguida ao ponto de lançamento da exceção
  • 11. Escopo • Quando um bloco try termina: • As variáveis locais declaradas no bloco saem de escopo e são destruídas • Quando um bloco catch termina: • As variáveis locais declaradas dentro do bloco catch, incluindo os parametros de exceção desse bloco, também saem de escopo e são destruídos
  • 12. Clausula THROWS • Especifica as exceções que o método lança • Aparece depois da lista de parâmetros do método e antes do corpo do método • Contém uma lista das exceções separadas por vírgulas que o método lançará se ocorrer um problema • Essas exceções podem ser lançadas por instruções no corpo do método ou por métodos chamados no corpo • Um método pode lançar exceções das classes listadas em sua cláusula throws ou de suas subclasses
  • 13. Quando usar? • O tratamento de exceções é projetado para processar erros síncronos, que ocorrem quando uma instrução é executada. • O tratamento de exceções não é projetado para processar problemas associados com os eventos assíncronos, que ocorrem paralelamente com o fluxo de controle do programa e independentemente dele.
  • 15. Hierarquia de Exceções Lançada quando um aplicativo tenta usar null em um caso em que é exigido um objeto.
  • 16. Hierarquia de Exceções Lançada para indicar que um índice de algum tipo (como para uma matriz, para uma string, ou um vetor) está fora da faixa definida.
  • 17. Hierarquia de Exceções • Todas as classes de exceção do JAVA herdam, direta ou indiretamente, da classe EXCEPTION. • THROWABLE • Subclasse de OBJECT e superclasse de EXCEPTION • EXCEPTION e ERROR • Representam situações excepcionais que podem ocorrer em um programa Java e podem ser capturadas pelo aplicativo
  • 18. Exceções Verificadas • Obriga a quem chama o método ou o construtor a tratar essa exceção • O compilador checará se ela está sendo devidamente tratada • Exceções verificadas tem que ser tratadas ou lançadas!
  • 19. Exceções Não Verificadas • São os problemas que provavelmente poderiam ser evitados pelo programador. • É por esse motivo que o JAVA não te obriga a usar o try/catch nessas exceptions. • O compilador não checa se você está tratando essas exceções.
  • 20. ERROR • Representam situações anormais que poderiam acontecer na JVM • ERROR acontece raramente e não devem ser capturados por aplicativos • Todas as classes que herdam da classe ERROR são Exceções Não Verificadas
  • 21. RuntimeException •A exceção RuntimeException e suas subclasses, são exceções lançadas pela JVM. • As exceções que são lançadas pela JVM são exceções não verificadas • Todos os tipos de exceção que são subclasses diretas ou indiretas da classe RuntimeException são exceções não verificadas
  • 22. Exception • A exceção EXCEPTION e suas subclasses, são exceções programáticas • Todas as classes que herdam da classe EXCEPTION mas não da classe RuntimeException são exceções verificadas • Exceções Programáticas • São aquelas criadas por um aplicativo ou por um desenvolvedor de API.
  • 23. Exceções Não Verificadas e Exceções Verificadas • As classes de exceção são definidas como classes verificadas quando são consideradas suficientemente importantes para a captura ou declaração em uma clausula throws • Fonte: http://www.caelum.com.br/apostila-javaorientacao-objetos/excecoes-e-controle-deerros/#11-4-outro-tipo-de-excecao-checkedexceptions
  • 24. Capturas de Exceções • Se um catch for escrito para capturar objetos de exceção de um tipo de superclasse, ele também pode capturar todos os objetos de subclasses dessa classe. • É um erro de compilação capturar o mesmo tipo de exceção em dois ou mais blocos catch diferentes associados com um bloco try em particular.
  • 25. Capturas de Exceções • Capturar a superclasse garante que os objetos de todas as subclasses serão capturadas • Um erro de compilação ocorrerá caso um bloco catch, para um tipo de exceção de superclasse, seja colocado ANTES de outros blocos catch que capturam tipos de exceção de subclasse. • Como consequencia, esses blocos não executarão, pois o bloco da superclasse já os está tratando.
  • 26. Finally • Programas que obtem certos tipos de recursos devem retorna-los ao sistema explicitamente para evitar os vazamentos de recursos. • Exemplos: arquivos, conexões de banco de dados, conexões de rede, etc... • Bloco finally é opcional
  • 27. Finally try { } catch(tipo de exceção 1) { } catch(tipo de exceção 2) { } finally { }
  • 28. Finally • Um bloco finally NÃO EXECUTARÁ: • Se o aplicativo fechar antes de um bloco try chamando o método system.exit (método que encerra um aplicativo de forma imediata) • Um bloco finally EXECUTARÁ: • Se uma exceção for lançada no BLOCO TRY ou BLOCO CATCH correspondente
  • 29. Finally • Se uma exceção ocorrer: • O programa pula o restante do bloco try • Se o programa capturar a exceção em um dos blocos catch: • O programa processa a exceção • O bloco finally libera o recurso em seguida • O controle do programa prossegue à primeira instrução depois do bloco finally
  • 30. Finally • Se uma exceção não ocorrer: • Os blocos catch são pulados • O controle do programa prossegue para o bloco finally • O bloco finally libera o recurso • O controle do programa prossegue à primeira instrução depois do bloco finally
  • 31. Finally • Se uma exceção não puder ser capturada: • O programa pula o restante do bloco try • O programa prossegue para o bloco finally (que executa) • O programa passa a exceção para o próximo bloco try externo • Um bloco catch associado pode capturar a exceção • O bloco finally executará de qualquer forma, mesmo que a exceção não for capturada
  • 32. System.err • Fluxo: uma sequência de bytes • System.out: é o fluxo de saída padrão. É usado para exibir uma saída do programa. As saídas podem ser enviadas para o monitor de tela. • System.err: é o fluxo de erro padrão. É usado para exibir erros de um programa. As saídas podem ser enviadas para um arquivo de log.
  • 34. Desempilhamento de pilha • Quando uma exceção é lançada mas não é capturada em um escopo em particular • A pilha de chamada de método é desempilhada • Uma tentativa de capturar a exceção no próximo bloco try externo é feita.
  • 35. Desempilhamento de pilha • Desempilhar a pilha de chamada de método significa: • O método em que a exceção não foi captura é encerrado • Todas as variáveis nele presentes saem de escopo • O controle retorna à instrução que invocou esse método.
  • 36. Desempilhamento de pilha • Se um bloco try incluir essa instrução: • Uma tentativa de capturar a exceção com catch é feita • Se um bloco try não incluir essa instrução: • O desempilhamento ocorre novamente • Se nenhum bloco catch capturar alguma vez essa exceção e a exceção for verificada: • Compilar o programa resultará em um erro
  • 38. Métodos da classe Throwable • printStackTrace • Envia para o fluxo de erro padrão o rastreamento da pilha • Util para o processo de teste e depuração • getStackTrace • Recupera informações sobre o rastreamento de pilha que podem ser impressas por printStackStrace • getMessage • Retorna a string descritiva armazenada em uma exceção
  • 40. Exceções Encadeadas • Permitem que um objeto de exceção mantenha informações do rastreamento de pilha completo • As vezes um bloco catch captura um tipo de exceção e depois lança uma nova exceção de um tipo diferente para indicar que ocorreu uma exceção específica no programa • Exceções encadeadas empacotam as informações da exceção original com as informações da nova exceção
  • 42. Precondições e PósCondições • São os estados esperados antes e depois da exceução de um métodos • Facilitam as tarefas e aprimoram todo o projeto • Diminuem os gastos com manutenção e depuração do código
  • 43. Pré Condição de um Método • É uma condição que deve ser verdadeira quando o método é invocado • Descrevem parâmetros de método • Descrevem quaisquer outras expectativas que o método tenha sobre o estado atual de um programa • Se um usuário não conseguir atender às précondições, então o comportamento de um método é indefinido • Nunca você deve supor ou esperar que o comportamento seja consistente se as précondições não forem satisfeitas
  • 44. Pós Condição de um Método • É uma condição que deve ser verdadeira depois de o método retornar com sucesso • Descrevem o valor de retorno • Descrevem quaisquer outros efeitos colaterais que o método possa apresentar • Ao chamar um método, você pode assumir que ele cumpre todas as suas pós conições • Você deve documentar toda as pós condições para que os outros programadores saibam o que esperar ao chamar o método
  • 45. Precondições e PósCondições • EXEMPLO: Método STRING CHARAT • Tem um parâmetro int: um índice na String • Précondição: o método assume que INDEX é maior que ou igual a zero e menor que o comprimento da STRING
  • 46. Precondições e PósCondições • EXEMPLO: Método STRING CHARAT • Póscondição: • Caso a PRÉCONDIÇÃO seja atendida: • Declara que o método retornará o caractere na posição na STRING especificada pelo parâmetro INDEX • Caso a PRÉCONDIÇÃO não seja atendida: •O método lança uma IndexOutOfBoundsException
  • 47. Precondições e PósCondições • O método charAt satisfaz sua póscondição desde que o programador atenda à precondição • DOCUMENTAÇÃO DO SOFTWARE • Escreva as póscondições e as précondições na especificação do seu software, se preferir, escreva comentários em cada declaração de método
  • 48. Assertivas • Condições que devem ser verdadeiras em um ponto particular de um método • Ajudam a assegurar a validade de um programa capturando BUGS potenciais • Ajudam a identificar possíveis erros de lógica durante o desenvolvimento • Précondições e póscondições são dois tipos de assertivas
  • 49. Assertivas • Pré condições: assertivas sobre o estado de um programa quando um método é invocado • Pós condições: assertivas sobre o estado de um programa depois do encerramento de um método • Assertivas podem comentários ser declaradas como • ASSERT: instrução para validar as assertivas programaticamente
  • 50. Assertivas • ASSERT: avalia uma expressão BOOLEAN e determina se ela é verdadeira ou falsa expressão assert • Avalia expressão e lança um AssertionError se a expressão for false assert expressão1 : expressão2 • Avalia expressão1 e lança um AssertionError, com expressão2 como a mensagem de erro, se expressão1 for false
  • 51. Exemplo 7 • Entrar no CMD.EXE • Entrar no diretório onde está salvo o arquivo .class • Java –ea AssertTest
  • 52. Exercícios • Responda em um arquivo do word e envie via syllabus