SlideShare une entreprise Scribd logo
1  sur  18
Tratamento de ExceçõesProf. douglas.frari@gmail.com  LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
Alunos para Apresentação Rosemberg Lima ( rosemberg_lima@hotmail.com ) Augusto Henrique ( augustodutraleal_@hotmail.com ) Jonas Glauciano ( jonas_glauciano@hotmail.com )  Wesley Galindo ( wesley-galindo@hotmail.com ) Joseildo Soares ( jonhi14@hotmail.com ) Renato Vasconcelos ( renato_cesar45@hotmail.com ) Sivaldo Severino ( silvado-14@hotmail.com )
Conteúdo de Apresentação O que é? Pra que serve? Vantagens Exemplo Positivo Exemplo Negativo Outros Exemplos Dificuldades/Soluções
O que é? Exceção é um evento que acontece durante a execução de um programa corrompendo o curso normal do seu fluxo lógico.  Em Java exceções são representadas por uma hierarquia particular de objetos. A classe raiz que representa uma exceção é Throwable.  
Tipos de Exceção Existem três categorias de exceções: Erro, Falha e Exceção de Contingência representadas respectivamente pelas classes: Error,  RuntimeException e Exception.
Para que serve? Por que usar o tratamento de exeções?        -Encontrar e Tratar erros Instruções condicionais vs Tratamento de exeções Instruções condicionais                 - Instruções tratam de condiçõesEx:  Um programador poe uma instrução If...Else que se o usuarionao digitarvalores válidos ,informa que está errado.(Isto não é um erro, apenas a condição esperada nao foi digitada) Tratamento de exeções        -Tratão áreas de possiveis erros        -Tratamento especificado de exeções        -Tratamento de todas a exeções do mesmo tipo
-Try : Aponta onde está o erro-Catch: É onde manipula o erro-Finaly– É executado  depois do bloco try catch
 Categorias de Exceção Erro (Error):  É uma das exceção mais graves, pois se ela acontece a própria aplicação não consegue resolver o problema,  e que existe realmente alguma coisa muito errada na aplicação.          		Ex:  StackOverflowError. Falha (RunTimeException):  É uma exceção mais leve, pois a aplicação irá rodar, mas provavelmente a mesma não irá funcionar corretamente.                                                                                                	Ex: IllegalArgumentException,  NullPointerException. Exceção de Contingência (Exception):  Esta exceção é mais simples, pois ela pode ou não pode ser causada pela aplicação.                 Ex: FileNotFoundException.
Vantagens... Trata condições incomuns que interrompem a operação normal da classe; Colocar as intruções passíveis de gerar exceções dentro bloco try. Exceções geradas durante a execução deste bloco podem ser detectadas e tratadas num bloco catch;
Fluxo try-catch-finally
Invocação de Método  e  Lançamento de Exceções
Validações  Evite sempre o bloco de tratamento de exceções Try/Catch para fazer validações simples, como por exemplo cálculos, conversões, etc..  Há sempre uma alternativa mais performática e ao mesmo tempo mais elegante de fazer essas operações para evitar todo o overhead que existe em um bloco Try/Catch.  Para exemplifcar isso, podemos citar alguns exemplos de códigos onde teremos primeiramente o código ruim e, em seguida, o mesmo código já reformulado:
Código ruim try { IReaderreader = (IReader)e.Data;   reader.ExecuteOperation(); } catch (InvalidCastException) { Response.Write("Tipo incompatível."); } try { int id = Convert.ToInt32(Request.QueryString["Id"]); this.BindForm(id); } catch (InvalidCastException) { Response.Write("Id inválido."); }Try Dimreader As IReader = DirectCast(e.Data, IReader) reader.ExecuteOperation() Catch ex As InvalidCastException Response.Write("Tipo incompatível.") EndTry Try Dim id As Integer = Convert.ToInt32(Request.QueryString("Id"))     Me.BindForm(id) Catch ex As InvalidCastException Response.Write("Id inválido.") EndTry
Código Reformulado else { Response.Write("Id inválido."); }Dimreader As IReader = TryCast(e.Data, IReader) IfNotIsNothing(reader) Then reader.ExecuteOperation() Else Response.Write("Tipo incompatível.") EndIf Dim id As Integer = 0 IfInteger.TryParse(Request.QueryString("Id"), id)     Me.BindForm(id) Else Response.Write("Id inválido.") Endif IReaderreader = (IReader)e.Data as IReader; if(reader != null) { reader.ExecuteOperation(); } else { Response.Write("Tipo incompatível."); } int id = 0; if(int.TryParse(Request.QueryString["Id"], out id)) { this.BindForm(id); }
Conclusão Boas práticas de programação são sempre bem-vindas em qualquer tipo de linguagem. Claro que as técnicas não param por aqui. Existem muitas outras técnicas e benefícios relacionados a cada uma delas que este artigo não contempla.  Este artigo dá apenas uma visão de técnicas que devem ser utilizadas no desenvolvimento de aplicações baseadas na plataforma .NET para tirar um melhor proveito da linguagem, não perdendo performance.
Outros Exemplos Ao executar esta classe sem informar nenhum argumento e, ao tentar acessar diretamente, conforme o exemplo descrito, uma exceção é obtida que interromperá a execução normal do programa, e a seguinte mensagem será mostrada:
Outros Exemplos SAÍDA
Dificuldades e Soluções

Contenu connexe

Tendances

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
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em javaMarques Amaro
 
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 7Inael Rodrigues
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosArthur Emanuel
 
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 TestesEverton Rodrigues
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch caseAlessandra Sra JM
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddCarlos Santana
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensivaKayo Rayner
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch caseAlessandra Sra JM
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoEder Samaniego
 

Tendances (20)

Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
JAVA - Tratamento de Erros
JAVA - Tratamento de ErrosJAVA - Tratamento de Erros
JAVA - Tratamento de Erros
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - 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
 
6 excecoes
6 excecoes6 excecoes
6 excecoes
 
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
 
Semana dois
Semana doisSemana dois
Semana dois
 
Algoritmos Aula 06
Algoritmos Aula 06Algoritmos Aula 06
Algoritmos Aula 06
 
Python 3.+
Python 3.+Python 3.+
Python 3.+
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
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
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch case
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch case
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Algoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetiçãoAlgoritmos 01 - Semana 08 - Estruturas de repetição
Algoritmos 01 - Semana 08 - Estruturas de repetição
 

En vedette

O ciclo do projeto (Parte 4): Implementação
O ciclo do projeto (Parte 4): ImplementaçãoO ciclo do projeto (Parte 4): Implementação
O ciclo do projeto (Parte 4): ImplementaçãoRotary International
 
Fortaleza-gp11-aq-energiasocial
Fortaleza-gp11-aq-energiasocialFortaleza-gp11-aq-energiasocial
Fortaleza-gp11-aq-energiasocialMarco Coghi
 
Gerenciamento de projetos treinamento PET Civil UFPR 2016
Gerenciamento de projetos treinamento PET Civil UFPR 2016Gerenciamento de projetos treinamento PET Civil UFPR 2016
Gerenciamento de projetos treinamento PET Civil UFPR 2016Ricardo Mendes Jr
 

En vedette (6)

O ciclo do projeto (Parte 4): Implementação
O ciclo do projeto (Parte 4): ImplementaçãoO ciclo do projeto (Parte 4): Implementação
O ciclo do projeto (Parte 4): Implementação
 
Fortaleza-gp11-aq-energiasocial
Fortaleza-gp11-aq-energiasocialFortaleza-gp11-aq-energiasocial
Fortaleza-gp11-aq-energiasocial
 
Analise sistemas 05
Analise sistemas 05Analise sistemas 05
Analise sistemas 05
 
Ciclo de Vida
Ciclo de VidaCiclo de Vida
Ciclo de Vida
 
Gerenciamento de projetos treinamento PET Civil UFPR 2016
Gerenciamento de projetos treinamento PET Civil UFPR 2016Gerenciamento de projetos treinamento PET Civil UFPR 2016
Gerenciamento de projetos treinamento PET Civil UFPR 2016
 
Gestão de projetos
Gestão de projetosGestão de projetos
Gestão de projetos
 

Similaire à Tratamento de exceções

Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java IVerônica Veiga
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticasFrancke Peixoto
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidiMasters
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidEduardo Carrara de Araujo
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Como manipular exceções em java
Como manipular exceções em javaComo manipular exceções em java
Como manipular exceções em javadaliarafaela
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catchLoiane Groner
 
Dubles de Testes - Na Pratica
Dubles de Testes - Na PraticaDubles de Testes - Na Pratica
Dubles de Testes - Na PraticaIsmael
 

Similaire à Tratamento de exceções (20)

Excecoes
ExcecoesExcecoes
Excecoes
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticas
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
Java3
Java3Java3
Java3
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Guia rapido java v2
Guia rapido java v2Guia rapido java v2
Guia rapido java v2
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Como manipular exceções em java
Como manipular exceções em javaComo manipular exceções em java
Como manipular exceções em java
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Dubles de Testes - Na Pratica
Dubles de Testes - Na PraticaDubles de Testes - Na Pratica
Dubles de Testes - Na Pratica
 

Tratamento de exceções

  • 1. Tratamento de ExceçõesProf. douglas.frari@gmail.com LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
  • 2. Alunos para Apresentação Rosemberg Lima ( rosemberg_lima@hotmail.com ) Augusto Henrique ( augustodutraleal_@hotmail.com ) Jonas Glauciano ( jonas_glauciano@hotmail.com ) Wesley Galindo ( wesley-galindo@hotmail.com ) Joseildo Soares ( jonhi14@hotmail.com ) Renato Vasconcelos ( renato_cesar45@hotmail.com ) Sivaldo Severino ( silvado-14@hotmail.com )
  • 3. Conteúdo de Apresentação O que é? Pra que serve? Vantagens Exemplo Positivo Exemplo Negativo Outros Exemplos Dificuldades/Soluções
  • 4. O que é? Exceção é um evento que acontece durante a execução de um programa corrompendo o curso normal do seu fluxo lógico.  Em Java exceções são representadas por uma hierarquia particular de objetos. A classe raiz que representa uma exceção é Throwable.  
  • 5. Tipos de Exceção Existem três categorias de exceções: Erro, Falha e Exceção de Contingência representadas respectivamente pelas classes: Error,  RuntimeException e Exception.
  • 6. Para que serve? Por que usar o tratamento de exeções?        -Encontrar e Tratar erros Instruções condicionais vs Tratamento de exeções Instruções condicionais                 - Instruções tratam de condiçõesEx: Um programador poe uma instrução If...Else que se o usuarionao digitarvalores válidos ,informa que está errado.(Isto não é um erro, apenas a condição esperada nao foi digitada) Tratamento de exeções        -Tratão áreas de possiveis erros        -Tratamento especificado de exeções        -Tratamento de todas a exeções do mesmo tipo
  • 7. -Try : Aponta onde está o erro-Catch: É onde manipula o erro-Finaly– É executado  depois do bloco try catch
  • 8. Categorias de Exceção Erro (Error): É uma das exceção mais graves, pois se ela acontece a própria aplicação não consegue resolver o problema, e que existe realmente alguma coisa muito errada na aplicação. Ex: StackOverflowError. Falha (RunTimeException): É uma exceção mais leve, pois a aplicação irá rodar, mas provavelmente a mesma não irá funcionar corretamente. Ex: IllegalArgumentException, NullPointerException. Exceção de Contingência (Exception): Esta exceção é mais simples, pois ela pode ou não pode ser causada pela aplicação. Ex: FileNotFoundException.
  • 9. Vantagens... Trata condições incomuns que interrompem a operação normal da classe; Colocar as intruções passíveis de gerar exceções dentro bloco try. Exceções geradas durante a execução deste bloco podem ser detectadas e tratadas num bloco catch;
  • 11. Invocação de Método e Lançamento de Exceções
  • 12. Validações Evite sempre o bloco de tratamento de exceções Try/Catch para fazer validações simples, como por exemplo cálculos, conversões, etc.. Há sempre uma alternativa mais performática e ao mesmo tempo mais elegante de fazer essas operações para evitar todo o overhead que existe em um bloco Try/Catch. Para exemplifcar isso, podemos citar alguns exemplos de códigos onde teremos primeiramente o código ruim e, em seguida, o mesmo código já reformulado:
  • 13. Código ruim try { IReaderreader = (IReader)e.Data; reader.ExecuteOperation(); } catch (InvalidCastException) { Response.Write("Tipo incompatível."); } try { int id = Convert.ToInt32(Request.QueryString["Id"]); this.BindForm(id); } catch (InvalidCastException) { Response.Write("Id inválido."); }Try Dimreader As IReader = DirectCast(e.Data, IReader) reader.ExecuteOperation() Catch ex As InvalidCastException Response.Write("Tipo incompatível.") EndTry Try Dim id As Integer = Convert.ToInt32(Request.QueryString("Id")) Me.BindForm(id) Catch ex As InvalidCastException Response.Write("Id inválido.") EndTry
  • 14. Código Reformulado else { Response.Write("Id inválido."); }Dimreader As IReader = TryCast(e.Data, IReader) IfNotIsNothing(reader) Then reader.ExecuteOperation() Else Response.Write("Tipo incompatível.") EndIf Dim id As Integer = 0 IfInteger.TryParse(Request.QueryString("Id"), id) Me.BindForm(id) Else Response.Write("Id inválido.") Endif IReaderreader = (IReader)e.Data as IReader; if(reader != null) { reader.ExecuteOperation(); } else { Response.Write("Tipo incompatível."); } int id = 0; if(int.TryParse(Request.QueryString["Id"], out id)) { this.BindForm(id); }
  • 15. Conclusão Boas práticas de programação são sempre bem-vindas em qualquer tipo de linguagem. Claro que as técnicas não param por aqui. Existem muitas outras técnicas e benefícios relacionados a cada uma delas que este artigo não contempla. Este artigo dá apenas uma visão de técnicas que devem ser utilizadas no desenvolvimento de aplicações baseadas na plataforma .NET para tirar um melhor proveito da linguagem, não perdendo performance.
  • 16. Outros Exemplos Ao executar esta classe sem informar nenhum argumento e, ao tentar acessar diretamente, conforme o exemplo descrito, uma exceção é obtida que interromperá a execução normal do programa, e a seguinte mensagem será mostrada: