SlideShare uma empresa Scribd logo
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia
Introdução
• Em sistemas de verdade, é muito comum que
quem saiba tratar o erro é aquele que chamou
o método e não a própria classe.
• Portanto, nada mais natural do que a classe
sinalizar que um erro ocorreu.
Exceção
• Uma exceção representa uma situação que
normalmente não ocorre e representa algo de
estranho ou inesperado no sistema.
• O sistema de exceções do Java funciona da
seguinte maneira:
– quando uma exceção é lançada (throw), a JVM entra
em estado de alerta e vai ver se o método atual toma
alguma precaução ao tentar executar esse trecho de
código.
Exceções
• Um código que vai tentar (try) executar o
bloco perigoso de código e ele
será pego (caught).
• Cada exceção no Java tem um tipo e pode ter
atributos e métodos.
Exceções
• Tratando-as no código:
try {
//Código a ser ‘testado’
}
catch (Exception e)
{
//Código que irá tratar a exceção
//capturada
}
Exceções mais comuns
• Divisão por zero
• Correção
Exceções mais comuns
• Acessar posição inválida de array
• Correção
Exceções mais comuns
• Referência para null tentando ser acessada
• Correção
Tipos de Exceções
• Checked Exceptions
– obriga a quem chama o método ou construtor a
tratar essa exceção
– o compilador checará se ela está sendo
devidamente tratada
• Unchecked Exceptions
• o compilador não checará e não obrigará a exceção a ser
tratada
• Código pode ser compilado e executado
• Abrir um arquivo sem tratar a Checked Exception
• Resulta em erro
• Código não é compilado
Checked Exceptions
Checked Exceptions
• Solução 1
– tratar com o try e catch
Checked Exceptions
• Solução 2
– delegar o erro para quem chamou o nosso
método, isto é, passar para a frente.
– Avisa da possibilidade daquele método lançar
exceção, obrigando o outro método que vá utilizar
deste de se preocupar com essa exceção em
questão.
Checked Exceptions
• Não há uma regra para decidir em que momento
do seu programa você vai tratar determinada
exceção.
• Isso vai depender de em que ponto você tem
condições de tomar uma decisão em relação
àquele erro.
• Enquanto não for o momento, você
provavelmente vai preferir delegar a
responsabilidade para o método que te invocou.
Tratando mais de um erro
• Com try/catch
• Com throws
Lançando Exceções
• A palavra chave throw lança uma Exception.
Criar a Própria Exceção
• É bem comum criar uma própria classe de exceção
para controlar melhor o uso de suas exceções.
• Obrigar quem chamar o método a usar try/catch ou
throws
throw throws Try/catch
Exceção
Própria
Finally...
• Os blocos try e catch podem conter uma terceira
cláusula chamada finally que indica o que deve
ser feito após o término do bloco try ou de
um catch qualquer.
– algo que é imprescindível de ser executado, caso o
que você queria fazer tenha dado certo, ou não
– O caso mais comum é o de liberar um recurso no
finally, como um arquivo ou conexão com banco de
dados, para que possamos ter a certeza de que aquele
arquivo (ou conexão) vá ser fechado, mesmo que algo
tenha falhado no decorrer do código.
Finally
Exercício
Exercício
• Considere um jogo de palavras em que o usuário deve
adivinhar a palavra correta.
• Cada palavra possui uma dica e o nome da palavra.
• Nesse jogo, há uma interface gráfica em swing que possui
um Jlabel com a dica da palavra a ser adivinhada, um
JTextField em que a palavra a ser adivinhada será digitada e
um Jbutton para confirmar se a palavra digitada está
correta.
• Crie na classe Palavra um método VerificaPalavra que
verifica se a palavra digitada pelo usuário está correta. Esse
método deve lançar exceção caso a palavra seja incorreta.
• Crie uma exceção, que vai ser disparada no seguinte caso:
– PalavraIncorretaException – é lançada quando o usuário errar a
palavra a ser adivinhada
Exceções e Tratamento de Erros
Arthur Emanuel de Oliveira Carosia

Mais conteúdo relacionado

Mais procurados

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
Ludimila Monjardim Casagrande
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
Antonio Oliveira
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
Elaine Cecília Gatto
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
Ludimila Monjardim Casagrande
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
Thiago Poiani
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Ludimila Monjardim Casagrande
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
Ludimila Monjardim Casagrande
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
Moises Omena
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
Evonaldo Gonçalves Vanny
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
 
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
Loiane Groner
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
rodfernandes
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
Gercélia Ramos
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
Elaine Cecília Gatto
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
Fabio Moura Pereira
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
Jonas Mendonça
 
PBD Select e restrições para Select
PBD Select e restrições para SelectPBD Select e restrições para Select
PBD Select e restrições para Select
Elaine Cecília Gatto
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
Helder da Rocha
 

Mais procurados (20)

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
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
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
PBD Select e restrições para Select
PBD Select e restrições para SelectPBD Select e restrições para Select
PBD Select e restrições para Select
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 

Destaque

Informatica - Aula 09 - Excel
Informatica - Aula 09 - ExcelInformatica - Aula 09 - Excel
Informatica - Aula 09 - Excel
Arthur Emanuel
 
Informatica - Aula 07 - Excel
Informatica - Aula 07 - ExcelInformatica - Aula 07 - Excel
Informatica - Aula 07 - Excel
Arthur Emanuel
 
Unidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas NumericosUnidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas Numericos
Arthur Emanuel
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
Arthur Emanuel
 
Sistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - SegurançaSistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - Segurança
Arthur Emanuel
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
Arthur Emanuel
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
Arthur Emanuel
 
Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06
Arthur Emanuel
 
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de TempoSistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Arthur Emanuel
 
CSS 3
CSS 3CSS 3
Sistemas Distribuídos - Aula 00
Sistemas Distribuídos - Aula 00Sistemas Distribuídos - Aula 00
Sistemas Distribuídos - Aula 00
Arthur Emanuel
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
Arthur Emanuel
 
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
Arthur Emanuel
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
Arthur Emanuel
 
Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
Adriano Teixeira de Souza
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - Persistência
Arthur Emanuel
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
Arthur Emanuel
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
Eduardo de Lucena Falcão
 
Informatica - Aula10 - Excel - Exercicios
Informatica - Aula10 - Excel - ExerciciosInformatica - Aula10 - Excel - Exercicios
Informatica - Aula10 - Excel - Exercicios
Arthur Emanuel
 

Destaque (19)

Informatica - Aula 09 - Excel
Informatica - Aula 09 - ExcelInformatica - Aula 09 - Excel
Informatica - Aula 09 - Excel
 
Informatica - Aula 07 - Excel
Informatica - Aula 07 - ExcelInformatica - Aula 07 - Excel
Informatica - Aula 07 - Excel
 
Unidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas NumericosUnidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas Numericos
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 
Sistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - SegurançaSistemas Distribuídos - Aula 08 - Segurança
Sistemas Distribuídos - Aula 08 - Segurança
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
 
Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06
 
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de TempoSistemas Distribuídos -  Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
Sistemas Distribuídos - Aula 09 - Tempos, Relogios e Sincronizacao de Tempo
 
CSS 3
CSS 3CSS 3
CSS 3
 
Sistemas Distribuídos - Aula 00
Sistemas Distribuídos - Aula 00Sistemas Distribuídos - Aula 00
Sistemas Distribuídos - Aula 00
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
 
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
O uso de TICs (games e aplicativos) na educação e no ensino de línguas. Apres...
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
 
Aula05 - Android - Persistência
Aula05 - Android - PersistênciaAula05 - Android - Persistência
Aula05 - Android - Persistência
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Informatica - Aula10 - Excel - Exercicios
Informatica - Aula10 - Excel - ExerciciosInformatica - Aula10 - Excel - Exercicios
Informatica - Aula10 - Excel - Exercicios
 

Semelhante a Java: Excecoes e Tratamento de Erros

Excecoes
ExcecoesExcecoes
Excecoes
EMSNEWS
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
Marques Amaro
 
JAVA - Tratamento de Erros
JAVA - Tratamento de ErrosJAVA - Tratamento de Erros
JAVA - Tratamento de Erros
Elaine Cecília Gatto
 
6 excecoes
6 excecoes6 excecoes
6 excecoes
Thiago Oliveira
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
Denis L Presciliano
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
Denis L Presciliano
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
Luis Fernando Pimenta
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
FranciscoMacopa
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
Leonardo Freitas
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
Vitor Silva
 
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
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
Verônica Veiga
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
Maurício Linhares
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
Inael Rodrigues
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
Glaucio Scheibel
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
Pedro De Almeida
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
Rafael Paz
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
Higor Klecyus
 
Debug Otimizado
Debug OtimizadoDebug Otimizado
Debug Otimizado
ScrumHalf Tool
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
Everton Rodrigues
 

Semelhante a Java: Excecoes e Tratamento de Erros (20)

Excecoes
ExcecoesExcecoes
Excecoes
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
 
JAVA - Tratamento de Erros
JAVA - Tratamento de ErrosJAVA - Tratamento de Erros
JAVA - Tratamento de Erros
 
6 excecoes
6 excecoes6 excecoes
6 excecoes
 
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
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
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)
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
 
Debug Otimizado
Debug OtimizadoDebug Otimizado
Debug Otimizado
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 

Mais de Arthur Emanuel

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Arthur Emanuel
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
Arthur Emanuel
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
Arthur Emanuel
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
Arthur Emanuel
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Arthur Emanuel
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Arthur Emanuel
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Arthur Emanuel
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Arthur Emanuel
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Arthur Emanuel
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Arthur Emanuel
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Arthur Emanuel
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
Arthur Emanuel
 
CSS
CSSCSS
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
Arthur Emanuel
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
Arthur Emanuel
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
Arthur Emanuel
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
Arthur Emanuel
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
Arthur Emanuel
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
Arthur Emanuel
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
Arthur Emanuel
 

Mais de Arthur Emanuel (20)

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
 
CSS
CSSCSS
CSS
 
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 

Java: Excecoes e Tratamento de Erros

  • 1. Exceções e Tratamento de Erros Arthur Emanuel de Oliveira Carosia
  • 2. Introdução • Em sistemas de verdade, é muito comum que quem saiba tratar o erro é aquele que chamou o método e não a própria classe. • Portanto, nada mais natural do que a classe sinalizar que um erro ocorreu.
  • 3. Exceção • Uma exceção representa uma situação que normalmente não ocorre e representa algo de estranho ou inesperado no sistema. • O sistema de exceções do Java funciona da seguinte maneira: – quando uma exceção é lançada (throw), a JVM entra em estado de alerta e vai ver se o método atual toma alguma precaução ao tentar executar esse trecho de código.
  • 4. Exceções • Um código que vai tentar (try) executar o bloco perigoso de código e ele será pego (caught). • Cada exceção no Java tem um tipo e pode ter atributos e métodos.
  • 5. Exceções • Tratando-as no código: try { //Código a ser ‘testado’ } catch (Exception e) { //Código que irá tratar a exceção //capturada }
  • 6. Exceções mais comuns • Divisão por zero • Correção
  • 7. Exceções mais comuns • Acessar posição inválida de array • Correção
  • 8. Exceções mais comuns • Referência para null tentando ser acessada • Correção
  • 9. Tipos de Exceções • Checked Exceptions – obriga a quem chama o método ou construtor a tratar essa exceção – o compilador checará se ela está sendo devidamente tratada • Unchecked Exceptions • o compilador não checará e não obrigará a exceção a ser tratada • Código pode ser compilado e executado
  • 10. • Abrir um arquivo sem tratar a Checked Exception • Resulta em erro • Código não é compilado Checked Exceptions
  • 11. Checked Exceptions • Solução 1 – tratar com o try e catch
  • 12. Checked Exceptions • Solução 2 – delegar o erro para quem chamou o nosso método, isto é, passar para a frente. – Avisa da possibilidade daquele método lançar exceção, obrigando o outro método que vá utilizar deste de se preocupar com essa exceção em questão.
  • 13. Checked Exceptions • Não há uma regra para decidir em que momento do seu programa você vai tratar determinada exceção. • Isso vai depender de em que ponto você tem condições de tomar uma decisão em relação àquele erro. • Enquanto não for o momento, você provavelmente vai preferir delegar a responsabilidade para o método que te invocou.
  • 14. Tratando mais de um erro • Com try/catch • Com throws
  • 15. Lançando Exceções • A palavra chave throw lança uma Exception.
  • 16. Criar a Própria Exceção • É bem comum criar uma própria classe de exceção para controlar melhor o uso de suas exceções. • Obrigar quem chamar o método a usar try/catch ou throws throw throws Try/catch Exceção Própria
  • 17. Finally... • Os blocos try e catch podem conter uma terceira cláusula chamada finally que indica o que deve ser feito após o término do bloco try ou de um catch qualquer. – algo que é imprescindível de ser executado, caso o que você queria fazer tenha dado certo, ou não – O caso mais comum é o de liberar um recurso no finally, como um arquivo ou conexão com banco de dados, para que possamos ter a certeza de que aquele arquivo (ou conexão) vá ser fechado, mesmo que algo tenha falhado no decorrer do código.
  • 20. Exercício • Considere um jogo de palavras em que o usuário deve adivinhar a palavra correta. • Cada palavra possui uma dica e o nome da palavra. • Nesse jogo, há uma interface gráfica em swing que possui um Jlabel com a dica da palavra a ser adivinhada, um JTextField em que a palavra a ser adivinhada será digitada e um Jbutton para confirmar se a palavra digitada está correta. • Crie na classe Palavra um método VerificaPalavra que verifica se a palavra digitada pelo usuário está correta. Esse método deve lançar exceção caso a palavra seja incorreta. • Crie uma exceção, que vai ser disparada no seguinte caso: – PalavraIncorretaException – é lançada quando o usuário errar a palavra a ser adivinhada
  • 21. Exceções e Tratamento de Erros Arthur Emanuel de Oliveira Carosia