SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Desenvolvimento em .NET




        Excepções
Objectivos
●   Conhecer conceito de tratamento de erros
    estuturado
●   Saber usar try-catch-finally
●   Distinguir entre verificação de erros e
    tratamento de excepções
●   Bubble exception
●   Excepções mais comuns
●   Criar custom exceptions
O que é um erro?
●   um resultado negativo não é necessariamente
    um erro!
●   exemplo:
    –   ao fazer login indico um nome de utilizador que não
        existe.
         ●   não é um erro porque é um resultado expectável e a
             aplicação sabe o que pode fazer a seguir: login
             inexistente.
O que é um erro?
●   exemplo:
    –   uma aplicação precisa de um parâmetro que está
        num ficheiro de texto, no entanto esse ficheiro foi
        apagado.
         ●   é um erro porque não há nenhum caminho alternativo
             para o código continuar a correr.
Tratamento de Erros Tradicional
●   executar função + verificar error_status
    –   “dificil” de implementar
    –   verificamos o error_status depois de cada funçao...
        linha sim linha não? verificamos só depois
        daquelas funções que normalmente dão erros?
●   on error goto TratamentoErro:
    –   pouco flexivel
    –   dentro do TratamentoErro temos que ter mais um
        case com todas os erros possiveis e imaginarios...
Tratamento de Erros Estruturado
●   Try – Catch – Finally
    –   try – tenta executar este código
    –   catch – se ocorrer um erro do tipo xpto então faz
        isto
    –   finally – de qualquer forma faz sempre isto.
Verificação de erros e Tratamento
              de Excepções
●   o facto de conseguirmos tratar um erro não
    quer dizer que abdiquemos de o tentar evitar
     –   exemplo: se sei que vou precisar de abrir um
         ficheiro faz sentido que verifique primeiro se ele
         existe.
Exercicio
●   Criar novo projecto
    chamado
    0010_Excepcoes
Bubble Exception
●   Não confundir com o Bubble Bobble!
Bubble Exception
●   bubble => numa hierarquia de objectos refere-
    se à passagem de uma classe para a sua base
    classe
●   bubble exception => se uma excepção não for
    tratada onde ocorrer passa para o primeiro try-
    catch que encontrar na call stack
Excepções mais comuns
●   ArgumentException – argumento de um
    procedimento inválido
●   ArgumentNullException – argumento de um
    procedimento inválido porque é igual a null
●   ArgumentOutOfRangeException – argumento
    de um procedimento inválido porque está fora
    dos limites definidos para esse parametro
Custom Exceptions
●   Exception é um objecto
    –   então podemos herdar dele e criar uma
        implementação mais descritiva.
●   Boa prática
    –   criar custom exceptions
Objectivos
●   Conhecer conceito de tratamento de erros
    estuturado
●   Saber usar try-catch-finally
●   Distinguir entre verificação de erros e
    tratamento de excepções
●   Bubble exception
●   Excepções mais comuns
●   Criar custom exceptions

Mais conteúdo relacionado

Mais procurados

Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticasFrancke Peixoto
 
JavaScript - #Aula04 parte 02 - Variaveis e Constantes
JavaScript - #Aula04 parte 02 - Variaveis e ConstantesJavaScript - #Aula04 parte 02 - Variaveis e Constantes
JavaScript - #Aula04 parte 02 - Variaveis e ConstantesErick L. F.
 
Nada sobre JavaScript
Nada sobre JavaScriptNada sobre JavaScript
Nada sobre JavaScriptLuis Vendrame
 
Pacote web java script
Pacote web   java scriptPacote web   java script
Pacote web java scriptJoão Henrique
 
Introdução a programação I
Introdução a programação IIntrodução a programação I
Introdução a programação IClerton Leal
 
Introdução a programação II
Introdução a programação IIIntrodução a programação II
Introdução a programação IIClerton Leal
 
Ciclo de vida de um componente react
Ciclo de vida de um componente reactCiclo de vida de um componente react
Ciclo de vida de um componente reactLaryssa Magalhães
 
Tratamento de exceções com PHP
Tratamento de exceções com PHPTratamento de exceções com PHP
Tratamento de exceções com PHPLeonardo Soares
 
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaN
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaNJavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaN
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaNErick L. F.
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha casoEder Samaniego
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockitoRenan Uchôa
 
MSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserMSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserJP Clementi
 
Como remover um programa de um computador?
Como remover um programa de um computador?Como remover um programa de um computador?
Como remover um programa de um computador?rcaaa
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoWeverton Timoteo
 

Mais procurados (20)

Vim
VimVim
Vim
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticas
 
JavaScript - #Aula04 parte 02 - Variaveis e Constantes
JavaScript - #Aula04 parte 02 - Variaveis e ConstantesJavaScript - #Aula04 parte 02 - Variaveis e Constantes
JavaScript - #Aula04 parte 02 - Variaveis e Constantes
 
Nada sobre JavaScript
Nada sobre JavaScriptNada sobre JavaScript
Nada sobre JavaScript
 
Pacote web java script
Pacote web   java scriptPacote web   java script
Pacote web java script
 
Introdução a programação I
Introdução a programação IIntrodução a programação I
Introdução a programação I
 
Introdução a programação II
Introdução a programação IIIntrodução a programação II
Introdução a programação II
 
TWP54 Exceções
TWP54 ExceçõesTWP54 Exceções
TWP54 Exceções
 
Ciclo de vida de um componente react
Ciclo de vida de um componente reactCiclo de vida de um componente react
Ciclo de vida de um componente react
 
Tratamento de exceções com PHP
Tratamento de exceções com PHPTratamento de exceções com PHP
Tratamento de exceções com PHP
 
Aula05 - Lógica de Programação
Aula05 - Lógica de ProgramaçãoAula05 - Lógica de Programação
Aula05 - Lógica de Programação
 
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaN
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaNJavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaN
JavaScript - #Aula04 parte 06 - CamelCase, getElementByID, isNaN
 
Java script2
Java script2Java script2
Java script2
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha caso
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
MSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browserMSDN Webcast - Melhores práticas cross browser
MSDN Webcast - Melhores práticas cross browser
 
Como remover um programa de um computador?
Como remover um programa de um computador?Como remover um programa de um computador?
Como remover um programa de um computador?
 
Algoritmos Aula 07
Algoritmos Aula 07Algoritmos Aula 07
Algoritmos Aula 07
 
Aula 13
Aula 13Aula 13
Aula 13
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
 

Destaque (8)

Mentores sum proceso
Mentores sum procesoMentores sum proceso
Mentores sum proceso
 
Uso de qr en promocion
Uso de qr en promocionUso de qr en promocion
Uso de qr en promocion
 
Reconstruíndo um país: O Software Livre na justiça de Timor Leste
Reconstruíndo um país: O Software Livre na justiça de Timor LesteReconstruíndo um país: O Software Livre na justiça de Timor Leste
Reconstruíndo um país: O Software Livre na justiça de Timor Leste
 
11705
1170511705
11705
 
11711
1171111711
11711
 
Slide
SlideSlide
Slide
 
Imagine Um Anjo
Imagine Um AnjoImagine Um Anjo
Imagine Um Anjo
 
Deepak 12.09.16
Deepak  12.09.16Deepak  12.09.16
Deepak 12.09.16
 

Semelhante a Desenvolvimento em .Net - Excepções

Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em javaMarques Amaro
 
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
 
Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
ApostilaAlgoritmo
ApostilaAlgoritmoApostilaAlgoritmo
ApostilaAlgoritmoprogidio
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java IVerônica Veiga
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptPedro Sousa
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 

Semelhante a Desenvolvimento em .Net - Excepções (20)

Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
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 em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
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
 
Excecoes
ExcecoesExcecoes
Excecoes
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Java 13 Excecoes
Java 13 ExcecoesJava 13 Excecoes
Java 13 Excecoes
 
ApostilaAlgoritmo
ApostilaAlgoritmoApostilaAlgoritmo
ApostilaAlgoritmo
 
Java Básico :: Exceções
Java Básico :: ExceçõesJava Básico :: Exceções
Java Básico :: Exceções
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - 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
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Testing sucks
Testing sucksTesting sucks
Testing sucks
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-pt
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 

Mais de Vitor Silva

Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoVitor Silva
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentVitor Silva
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateVitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosVitor Silva
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionVitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingVitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosVitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceVitor Silva
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesVitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioVitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasVitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 

Mais de Vitor Silva (16)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 

Desenvolvimento em .Net - Excepções

  • 2. Objectivos ● Conhecer conceito de tratamento de erros estuturado ● Saber usar try-catch-finally ● Distinguir entre verificação de erros e tratamento de excepções ● Bubble exception ● Excepções mais comuns ● Criar custom exceptions
  • 3. O que é um erro? ● um resultado negativo não é necessariamente um erro! ● exemplo: – ao fazer login indico um nome de utilizador que não existe. ● não é um erro porque é um resultado expectável e a aplicação sabe o que pode fazer a seguir: login inexistente.
  • 4. O que é um erro? ● exemplo: – uma aplicação precisa de um parâmetro que está num ficheiro de texto, no entanto esse ficheiro foi apagado. ● é um erro porque não há nenhum caminho alternativo para o código continuar a correr.
  • 5. Tratamento de Erros Tradicional ● executar função + verificar error_status – “dificil” de implementar – verificamos o error_status depois de cada funçao... linha sim linha não? verificamos só depois daquelas funções que normalmente dão erros? ● on error goto TratamentoErro: – pouco flexivel – dentro do TratamentoErro temos que ter mais um case com todas os erros possiveis e imaginarios...
  • 6. Tratamento de Erros Estruturado ● Try – Catch – Finally – try – tenta executar este código – catch – se ocorrer um erro do tipo xpto então faz isto – finally – de qualquer forma faz sempre isto.
  • 7. Verificação de erros e Tratamento de Excepções ● o facto de conseguirmos tratar um erro não quer dizer que abdiquemos de o tentar evitar – exemplo: se sei que vou precisar de abrir um ficheiro faz sentido que verifique primeiro se ele existe.
  • 8. Exercicio ● Criar novo projecto chamado 0010_Excepcoes
  • 9. Bubble Exception ● Não confundir com o Bubble Bobble!
  • 10. Bubble Exception ● bubble => numa hierarquia de objectos refere- se à passagem de uma classe para a sua base classe ● bubble exception => se uma excepção não for tratada onde ocorrer passa para o primeiro try- catch que encontrar na call stack
  • 11. Excepções mais comuns ● ArgumentException – argumento de um procedimento inválido ● ArgumentNullException – argumento de um procedimento inválido porque é igual a null ● ArgumentOutOfRangeException – argumento de um procedimento inválido porque está fora dos limites definidos para esse parametro
  • 12. Custom Exceptions ● Exception é um objecto – então podemos herdar dele e criar uma implementação mais descritiva. ● Boa prática – criar custom exceptions
  • 13. Objectivos ● Conhecer conceito de tratamento de erros estuturado ● Saber usar try-catch-finally ● Distinguir entre verificação de erros e tratamento de excepções ● Bubble exception ● Excepções mais comuns ● Criar custom exceptions