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

Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
alexmacedo
 
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
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
Algoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlgoritmos e Programação: Vetores
Algoritmos e Programação: Vetores
Alex Camargo
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
Regis Magalhães
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
Charles Jungbeck
 
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
 
Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScript
Pablo Sanches
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03
Ramon Kayo
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
angelicamenegassi
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
Léo Dias
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
Jorge Ávila Miranda
 
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
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
Gercélia Ramos
 
Html
HtmlHtml
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
Anderson Sanches
 

Mais procurados (20)

Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
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
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Algoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlgoritmos e Programação: Vetores
Algoritmos e Programação: Vetores
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e 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
 
Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScript
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
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
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Html
HtmlHtml
Html
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 

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

Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
Fabio Moura Pereira
 
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
 

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

Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
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
 

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
 

Último

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 

Último (8)

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 

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