SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Aula 5 Erros e casos excepcionais: conceitos; representação, criação, detecção e tratamento; boas práticas (e segurança)
Na aula anterior… A infra-estrutura aplicacional de colecções do Java (Java Collections Framework) 2009/2010 Programação Orientada por Objectos 2
Conceitos 2009/2010 Programação Orientada por Objectos 3
Representação e criação Em Java, casos excepcionais, erros de programação e erros no ambiente de execução representam-se através de lançáveis Os lançáveis são criados e lançados Explicitamente: throw Implicitamente: assert Automaticamente: JVM, por exemplo Por métodos sobre os quais não temos controlo 2009/2010 Programação Orientada por Objectos 4
Detecção e tratamento Lançáveis em Java podem ser capturados Para lidar integralmente com um caso excepcional Para lidar parcialmente com um caso excepcional Apenas para “arrumar a casa” , quando não se sabe lidar com um caso excepcional Para terminar o programa de forma adequada em caso de erro de programação ou de erro no ambiente de execução 2009/2010 Programação Orientada por Objectos 5 Isto não é uma recuperação, mas sim um elegante harakiri.
Lançáveis Java Usados para representar Casos excepcionais Erros de programação Erros no contexto de execução de um programa São objectos de classes pertencentes à hierarquia com base na classe Throwable São lançáveis através da instrução throw Lançamento interrompe o fluxo normal de um programa Programação Orientada por Objectos 2009/2010 6
Hierarquia de lançáveis em Java 2009/2010 Programação Orientada por Objectos 7 Throwable Casos excepcionais. Erros de programação correspondentes a violação de pré-condições em contratos não privados. Erros no ambiente de execução. Error Exception IOException VirtualMachineError … … RuntimeException AssertionError ArithmeticException Erros de programação (excepto violação de pré-condições em contratos não privados). NullPointerException …
Hierarquia de lançáveis em Java Throwable Error VirtualMachineError … AssertionError Exception IOException … RuntimeException ArithmeticException NullPointerException IndexOutOfBoundsException … Erros de programação (excepto violação de pré-condições em contratos não privados). Criação implícita quando asserção falha. Normalmente irrecuperáveis. Erros de programação correspondentes a violações pré-condições de contratos não privados. Criação explícita. Lançamento com throw. Normalmente irrecuperáveis. 2009/2010 8 Programação Orientada por Objectos Erros no ambiente de execução. Criação automática. Normalmente irrecuperáveis. Casos excepcionais. Criação explícita. Lançamento com throw. Normalmente recuperáveis.
Características 2009/2010 Programação Orientada por Objectos 9 Possibilidade de lançamento tem de ser declarada! 1 Para aplicações não críticas. 2 Excepto RuntimeException e derivadas. 3 Para violações de pré-condições em contratos não privados. 4 Para todos os restantes casos. 5 Excepto AssertionError.
Algumas RuntimeException 2009/2010 Programação Orientada por Objectos 10
Lançamento explícito para caso excepcional public void someMethod(…) throwsSomeException {     …     if (…) throw new SomeException("Informative message");     … } Declaração de possibilidade de lançamento: ,[object Object]
Não recomendada para restantes casos (Error e RuntimeException).2009/2010 11 Programação Orientada por Objectos
Lançamento explícito para erro de programação static public double squareRoot(final double value) {     if (value < 0.0)         throw new IllegalArgumentException(             "Illegal value " + value              + ", should be 0 ≤ value");     … } 2009/2010 12 Programação Orientada por Objectos Violação de pré-condição em contrato não privado.
Delegação ou declaração de passagem (throws) public void someMethod(…) throws SomeException {     … anObject.someOtherMethod(…);      … // only if no exception is thrown. } 2009/2010 Programação Orientada por Objectos 13
Lidando com caso excepcional public void someMethod(…) { try {         … anObject.someOtherMethod(…);         … // only if no exception is thrown.     } catch (final SomeException exception) {         … // fix the problem using information available.      }     … // continue execution. } 2009/2010 14 Programação Orientada por Objectos
Arrumando a casa com finally public void someMethod(…) {     try {         … anObject.someOtherMethod(…);         …     } catch (final SomeException exception) {         …     } finally {         … // clean house in any case.     }     … } 2009/2010 15 Programação Orientada por Objectos Bloco finally executado mesmo no caso de excepções não capturadas, retornos, novos lançamentos, asserções falhadas, etc.
Lidando parcialmente com caso excepcional public void someMethod(…) throws SomeException {     try {         … anObject.someOtherMethod(…);         …     } catch (final SomeException exception) {         … // fix part of the problem using information available.         throw exception;     }     … } 2009/2010 16 Programação Orientada por Objectos Relançamento da excepção capturada.
Informação adicional sobre a ocorrência public void someMethod(…) throws SomeOtherException {     try {         … anObject.someOtherMethod(…);         …     } catch (final SomeException exception) {         … // clean house if necessary.         throw new SomeOtherException(             "Informative message", exception);     }     … } 2009/2010 17 Programação Orientada por Objectos Apenas se se tratar de um caso excepcional. Lançável capturado é a causa do novo lançável.
Captura múltipla public void someMethod(…) { try {         …     } catch (final SomeException exception){         …     } catch (final RuntimeException exception){         …     } catch (final IOException exception){         …     } catch (final Exception exception){         …     }     … } Excepções mais específicas têm de estar primeiro. 2009/2010 18 Programação Orientada por Objectos
Operação printStackTrace publicvoidsomeMethod(…) {     … try {         …     } catch (final SomeExceptionexception) { exception.printStackTrace();         …     }     … } Imprime uma representação da pilha de invocações no momento em que a excepção foi lançada. pt.iscte.dcti.poo.exceptions.SomeException atpt.iscte.dcti.poo.SomeClass.someMethod(SomeClass.java:16) atpt.iscte.dcti.poo.SomeOtherClass.someOtherMethod(SomeOtherClass.java:9) atpt.iscte.dcti.poo.MainClass.main(MainClass.java:36) 2009/2010 19 Programação Orientada por Objectos
Contratos: documentação e verificação /**  * Returns the double closest to the square root of its argument  * value.  *  * @pre 0 ≤ value  * @post …  * @param value the value whose square root will be approximated  * @throws IllegalArgumentException If value < 0  */ static public double squareRoot(final double value) {     if(value < 0)         throw new IllegalArgumentException(“Message");     …     assert … : "Informative message";     return result; } 2009/2010 20 Programação Orientada por Objectos As asserções, por omissão, estão desactivadas. Para que tenham algum efeito tem de se executar a JVM com a opção -ea.
Invariante de instância public Rational(final int numerator,                  final int denominator) {     if(denominator == 0)         throw new IllegalArgumentException("Message"); this.numerator = numerator; this.denominator = denominator;     normalize(); checkInvariant(); } private void checkInvariant() {     assert 0 < denominator : "…";     assert gcd(numerator, denominator) == 1 : "…"; } … Onde? No final dos construtores, no início de métodos não modificadores e no início e no fim de métodos modificadores. O invariante de instância é a condição que todas as instâncias de uma classe têm de verificar para que estejam num estado correcto. 2009/2010 21 Programação Orientada por Objectos
Métodos privados private void reduce() {     assert denominator != 0;     if (denominator < 0) {         denominator = -denominator;         numerator = -numerator;     }     final intgcd = gcd(numerator, denominator);     numerator /= gcd;     denominator /= gcd;     assert mdc(numerator, denominator) == 1 : "…";     assert 0 < denominator : "…"; } 2009/2010 Programação Orientada por Objectos 22 Pré-condição de método privado (parte da implementação da classe) verificada com asserção. Nos métodos privados não se verifica o invariante de instância, pelo menos enquanto tal.
Lançáveis definidos pelo programador public class SomeException extends Exception {     public Exception() {     }     public Exception(final String message) {         super(message);     }     public Exception(final String message,                      final Throwable cause) {         super(message, cause);     }     public Exception(final Throwable cause) {         super(cause);     } } 2009/2010 23 Programação Orientada por Objectos
Boas práticas Distinga claramente a natureza dos erros e casos excepcionais Lide com cada ocorrência usando os mecanismos adequados (e convencionais) à sua natureza 2009/2010 Programação Orientada por Objectos 24
Boas práticas Use assert apenas para erros de programação Pré-condições de métodos privados Pós-condições Invariantes de instância Asserções propriamente ditas Use throw Para erros de programação Pré-condições de métodos não privados Casos excepcionais 2009/2010 25 Programação Orientada por Objectos
Boas práticas Não tente recuperar de uma ocorrência sem antes perceber a sua causa Não desactive as asserções durante a operação normal do softwaresenão quando tiverem um impacte negativo significativo sobre o seu desempenho Tente recorrer a lançáveis já existentes na biblioteca padrão do Java 2009/2010 Programação Orientada por Objectos 26
Boas práticas Documente possibilidade de lançamento de deRuntimeException (e classes derivadas) quando esse lançamento puder ocorrer devido erros na utilização da interface da operação Lembre-se que pode capturar um lançável e lançar um outro que torne mais claro qual o problema (não deve abusar desta estratégia) 2009/2010 Programação Orientada por Objectos 27
Boas práticas: segurança Escreva o seu código de modo a que o lançamento de um lançável num método deixe o programa no mesmo estado em que estava antes da operação correspondente ser invocada Se isso não for possível, escreva o código de modo a, pelo menos, deixar todos os objectos num estado válido 2009/2010 Programação Orientada por Objectos 28
Boas práticas: testes Para cada unidade (classe ou conjunto de classes intimamente ligadas) crie um caso de teste JUnit Crie os testes antes mesmo de começar a desenhar a unidade: pensar nos testes ajuda a perceber melhor que interface deve ter a unidade Teste sempre as situações limite e casos especiais (referências nulas, cadeias de caracteres vazias, valores numéricos no limite, etc.) 2009/2010 29 Programação Orientada por Objectos
Boas práticas: testes Lembre-se que os testes se devem basear apenas na interface não privada da unidade (testes de caixa preta) Evite alterar a interface não privada quando fizer alterações a uma unidade Se precisar de alterar a interface não privada de uma unidade, actualize todos testes e reveja todos os contratos e respectiva documentação Quando alterar a implementação de uma unidade, reveja o seu invariante e execute todos os seus testes 2009/2010 30 Programação Orientada por Objectos
A reter… Detecção e tratamento de ocorrências fundamental para boa programação Princípio subjacente à programação em linguagens como o Java é que quanto mais cedo se detectarem erros, mais fácil é corrigi-los e menor o seu impacte Asserções usam-se para expressar condições que devem ser verdadeiras para que o programa esteja correcto Asserções antecipam detecção de erros de programação e melhoram sua localização 2009/2010 31 Programação Orientada por Objectos
A reter… A relação das excepções declaradas com a operação em causa deve ser clara e deve ser documentada Detecção de erro de programação ou de erro no ambiente de execução do programa deve levar sistema, se não crítico, a cometer um elegante harakiri, tão simpático para utilizadores quanto possível Um programa honrado percebe quando falha e extingue-se voluntariamente, não deixando que erros se propaguem 2009/2010 Programação Orientada por Objectos 32
A ler para as próximas aulas ... Capítulo 18 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2009/2010 Programação Orientada por Objectos 33

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28Hélio Medeiros
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Android DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaAndroid DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaiMasters
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-Cosmarcf
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSFábio Miranda
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
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
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnitelliando dias
 

Was ist angesagt? (19)

Ferramentas testes2003
Ferramentas testes2003Ferramentas testes2003
Ferramentas testes2003
 
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)
 
Evento CODERS
Evento CODERSEvento CODERS
Evento CODERS
 
Threads e Estruturas de dados
Threads e Estruturas de dadosThreads e Estruturas de dados
Threads e Estruturas de dados
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28
 
Power mock
Power mockPower mock
Power mock
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Android DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaAndroid DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJava
 
Java12
Java12Java12
Java12
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Java14
Java14Java14
Java14
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Java 06
Java 06Java 06
Java 06
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOS
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
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
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 

Andere mochten auch

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
Introdução à programação em Android - Alcides Maya 16.04.2013
Introdução à programação em Android - Alcides Maya 16.04.2013Introdução à programação em Android - Alcides Maya 16.04.2013
Introdução à programação em Android - Alcides Maya 16.04.2013guisester
 
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Luís Gustavo Martins
 
Conceitos e técnicas de programação introdução
Conceitos e técnicas de programação introduçãoConceitos e técnicas de programação introdução
Conceitos e técnicas de programação introduçãoRobson Ferreira
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectosManuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...Manuel Menezes de Sequeira
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...Manuel Menezes de Sequeira
 

Andere mochten auch (20)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Introdução à programação em Android - Alcides Maya 16.04.2013
Introdução à programação em Android - Alcides Maya 16.04.2013Introdução à programação em Android - Alcides Maya 16.04.2013
Introdução à programação em Android - Alcides Maya 16.04.2013
 
Aplicando logica orientada_a_objeto_em_java
Aplicando logica orientada_a_objeto_em_javaAplicando logica orientada_a_objeto_em_java
Aplicando logica orientada_a_objeto_em_java
 
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...Introdução à programação em Android e iOS - Conceitos fundamentais de program...
Introdução à programação em Android e iOS - Conceitos fundamentais de program...
 
Conceitos e técnicas de programação introdução
Conceitos e técnicas de programação introduçãoConceitos e técnicas de programação introdução
Conceitos e técnicas de programação introdução
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 

Ähnlich wie Java Exceptions Aula 5

TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasDenis L Presciliano
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
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
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Diego Pacheco
 
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
 

Ähnlich wie Java Exceptions Aula 5 (20)

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
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Event-based Asynchronous Pattern (EAP)
Event-based Asynchronous Pattern (EAP)Event-based Asynchronous Pattern (EAP)
Event-based Asynchronous Pattern (EAP)
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependências
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõ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
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 
RMI em Java
RMI em JavaRMI em Java
RMI 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
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Aula5
Aula5Aula5
Aula5
 

Mehr von Manuel Menezes de Sequeira

10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...Manuel Menezes de Sequeira
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, ScannerManuel Menezes de Sequeira
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteresManuel Menezes de Sequeira
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...Manuel Menezes de Sequeira
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Manuel Menezes de Sequeira
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoManuel Menezes de Sequeira
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorManuel Menezes de Sequeira
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoManuel Menezes de Sequeira
 

Mehr von Manuel Menezes de Sequeira (20)

10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 

Kürzlich hochgeladen

planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 

Kürzlich hochgeladen (20)

planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 

Java Exceptions Aula 5

  • 1. Aula 5 Erros e casos excepcionais: conceitos; representação, criação, detecção e tratamento; boas práticas (e segurança)
  • 2. Na aula anterior… A infra-estrutura aplicacional de colecções do Java (Java Collections Framework) 2009/2010 Programação Orientada por Objectos 2
  • 3. Conceitos 2009/2010 Programação Orientada por Objectos 3
  • 4. Representação e criação Em Java, casos excepcionais, erros de programação e erros no ambiente de execução representam-se através de lançáveis Os lançáveis são criados e lançados Explicitamente: throw Implicitamente: assert Automaticamente: JVM, por exemplo Por métodos sobre os quais não temos controlo 2009/2010 Programação Orientada por Objectos 4
  • 5. Detecção e tratamento Lançáveis em Java podem ser capturados Para lidar integralmente com um caso excepcional Para lidar parcialmente com um caso excepcional Apenas para “arrumar a casa” , quando não se sabe lidar com um caso excepcional Para terminar o programa de forma adequada em caso de erro de programação ou de erro no ambiente de execução 2009/2010 Programação Orientada por Objectos 5 Isto não é uma recuperação, mas sim um elegante harakiri.
  • 6. Lançáveis Java Usados para representar Casos excepcionais Erros de programação Erros no contexto de execução de um programa São objectos de classes pertencentes à hierarquia com base na classe Throwable São lançáveis através da instrução throw Lançamento interrompe o fluxo normal de um programa Programação Orientada por Objectos 2009/2010 6
  • 7. Hierarquia de lançáveis em Java 2009/2010 Programação Orientada por Objectos 7 Throwable Casos excepcionais. Erros de programação correspondentes a violação de pré-condições em contratos não privados. Erros no ambiente de execução. Error Exception IOException VirtualMachineError … … RuntimeException AssertionError ArithmeticException Erros de programação (excepto violação de pré-condições em contratos não privados). NullPointerException …
  • 8. Hierarquia de lançáveis em Java Throwable Error VirtualMachineError … AssertionError Exception IOException … RuntimeException ArithmeticException NullPointerException IndexOutOfBoundsException … Erros de programação (excepto violação de pré-condições em contratos não privados). Criação implícita quando asserção falha. Normalmente irrecuperáveis. Erros de programação correspondentes a violações pré-condições de contratos não privados. Criação explícita. Lançamento com throw. Normalmente irrecuperáveis. 2009/2010 8 Programação Orientada por Objectos Erros no ambiente de execução. Criação automática. Normalmente irrecuperáveis. Casos excepcionais. Criação explícita. Lançamento com throw. Normalmente recuperáveis.
  • 9. Características 2009/2010 Programação Orientada por Objectos 9 Possibilidade de lançamento tem de ser declarada! 1 Para aplicações não críticas. 2 Excepto RuntimeException e derivadas. 3 Para violações de pré-condições em contratos não privados. 4 Para todos os restantes casos. 5 Excepto AssertionError.
  • 10. Algumas RuntimeException 2009/2010 Programação Orientada por Objectos 10
  • 11.
  • 12. Não recomendada para restantes casos (Error e RuntimeException).2009/2010 11 Programação Orientada por Objectos
  • 13. Lançamento explícito para erro de programação static public double squareRoot(final double value) { if (value < 0.0) throw new IllegalArgumentException( "Illegal value " + value + ", should be 0 ≤ value"); … } 2009/2010 12 Programação Orientada por Objectos Violação de pré-condição em contrato não privado.
  • 14. Delegação ou declaração de passagem (throws) public void someMethod(…) throws SomeException { … anObject.someOtherMethod(…); … // only if no exception is thrown. } 2009/2010 Programação Orientada por Objectos 13
  • 15. Lidando com caso excepcional public void someMethod(…) { try { … anObject.someOtherMethod(…); … // only if no exception is thrown. } catch (final SomeException exception) { … // fix the problem using information available. } … // continue execution. } 2009/2010 14 Programação Orientada por Objectos
  • 16. Arrumando a casa com finally public void someMethod(…) { try { … anObject.someOtherMethod(…); … } catch (final SomeException exception) { … } finally { … // clean house in any case. } … } 2009/2010 15 Programação Orientada por Objectos Bloco finally executado mesmo no caso de excepções não capturadas, retornos, novos lançamentos, asserções falhadas, etc.
  • 17. Lidando parcialmente com caso excepcional public void someMethod(…) throws SomeException { try { … anObject.someOtherMethod(…); … } catch (final SomeException exception) { … // fix part of the problem using information available. throw exception; } … } 2009/2010 16 Programação Orientada por Objectos Relançamento da excepção capturada.
  • 18. Informação adicional sobre a ocorrência public void someMethod(…) throws SomeOtherException { try { … anObject.someOtherMethod(…); … } catch (final SomeException exception) { … // clean house if necessary. throw new SomeOtherException( "Informative message", exception); } … } 2009/2010 17 Programação Orientada por Objectos Apenas se se tratar de um caso excepcional. Lançável capturado é a causa do novo lançável.
  • 19. Captura múltipla public void someMethod(…) { try { … } catch (final SomeException exception){ … } catch (final RuntimeException exception){ … } catch (final IOException exception){ … } catch (final Exception exception){ … } … } Excepções mais específicas têm de estar primeiro. 2009/2010 18 Programação Orientada por Objectos
  • 20. Operação printStackTrace publicvoidsomeMethod(…) { … try { … } catch (final SomeExceptionexception) { exception.printStackTrace(); … } … } Imprime uma representação da pilha de invocações no momento em que a excepção foi lançada. pt.iscte.dcti.poo.exceptions.SomeException atpt.iscte.dcti.poo.SomeClass.someMethod(SomeClass.java:16) atpt.iscte.dcti.poo.SomeOtherClass.someOtherMethod(SomeOtherClass.java:9) atpt.iscte.dcti.poo.MainClass.main(MainClass.java:36) 2009/2010 19 Programação Orientada por Objectos
  • 21. Contratos: documentação e verificação /** * Returns the double closest to the square root of its argument * value. * * @pre 0 ≤ value * @post … * @param value the value whose square root will be approximated * @throws IllegalArgumentException If value < 0 */ static public double squareRoot(final double value) { if(value < 0) throw new IllegalArgumentException(“Message"); … assert … : "Informative message"; return result; } 2009/2010 20 Programação Orientada por Objectos As asserções, por omissão, estão desactivadas. Para que tenham algum efeito tem de se executar a JVM com a opção -ea.
  • 22. Invariante de instância public Rational(final int numerator, final int denominator) { if(denominator == 0) throw new IllegalArgumentException("Message"); this.numerator = numerator; this.denominator = denominator; normalize(); checkInvariant(); } private void checkInvariant() { assert 0 < denominator : "…"; assert gcd(numerator, denominator) == 1 : "…"; } … Onde? No final dos construtores, no início de métodos não modificadores e no início e no fim de métodos modificadores. O invariante de instância é a condição que todas as instâncias de uma classe têm de verificar para que estejam num estado correcto. 2009/2010 21 Programação Orientada por Objectos
  • 23. Métodos privados private void reduce() { assert denominator != 0; if (denominator < 0) { denominator = -denominator; numerator = -numerator; } final intgcd = gcd(numerator, denominator); numerator /= gcd; denominator /= gcd; assert mdc(numerator, denominator) == 1 : "…"; assert 0 < denominator : "…"; } 2009/2010 Programação Orientada por Objectos 22 Pré-condição de método privado (parte da implementação da classe) verificada com asserção. Nos métodos privados não se verifica o invariante de instância, pelo menos enquanto tal.
  • 24. Lançáveis definidos pelo programador public class SomeException extends Exception { public Exception() { } public Exception(final String message) { super(message); } public Exception(final String message, final Throwable cause) { super(message, cause); } public Exception(final Throwable cause) { super(cause); } } 2009/2010 23 Programação Orientada por Objectos
  • 25. Boas práticas Distinga claramente a natureza dos erros e casos excepcionais Lide com cada ocorrência usando os mecanismos adequados (e convencionais) à sua natureza 2009/2010 Programação Orientada por Objectos 24
  • 26. Boas práticas Use assert apenas para erros de programação Pré-condições de métodos privados Pós-condições Invariantes de instância Asserções propriamente ditas Use throw Para erros de programação Pré-condições de métodos não privados Casos excepcionais 2009/2010 25 Programação Orientada por Objectos
  • 27. Boas práticas Não tente recuperar de uma ocorrência sem antes perceber a sua causa Não desactive as asserções durante a operação normal do softwaresenão quando tiverem um impacte negativo significativo sobre o seu desempenho Tente recorrer a lançáveis já existentes na biblioteca padrão do Java 2009/2010 Programação Orientada por Objectos 26
  • 28. Boas práticas Documente possibilidade de lançamento de deRuntimeException (e classes derivadas) quando esse lançamento puder ocorrer devido erros na utilização da interface da operação Lembre-se que pode capturar um lançável e lançar um outro que torne mais claro qual o problema (não deve abusar desta estratégia) 2009/2010 Programação Orientada por Objectos 27
  • 29. Boas práticas: segurança Escreva o seu código de modo a que o lançamento de um lançável num método deixe o programa no mesmo estado em que estava antes da operação correspondente ser invocada Se isso não for possível, escreva o código de modo a, pelo menos, deixar todos os objectos num estado válido 2009/2010 Programação Orientada por Objectos 28
  • 30. Boas práticas: testes Para cada unidade (classe ou conjunto de classes intimamente ligadas) crie um caso de teste JUnit Crie os testes antes mesmo de começar a desenhar a unidade: pensar nos testes ajuda a perceber melhor que interface deve ter a unidade Teste sempre as situações limite e casos especiais (referências nulas, cadeias de caracteres vazias, valores numéricos no limite, etc.) 2009/2010 29 Programação Orientada por Objectos
  • 31. Boas práticas: testes Lembre-se que os testes se devem basear apenas na interface não privada da unidade (testes de caixa preta) Evite alterar a interface não privada quando fizer alterações a uma unidade Se precisar de alterar a interface não privada de uma unidade, actualize todos testes e reveja todos os contratos e respectiva documentação Quando alterar a implementação de uma unidade, reveja o seu invariante e execute todos os seus testes 2009/2010 30 Programação Orientada por Objectos
  • 32. A reter… Detecção e tratamento de ocorrências fundamental para boa programação Princípio subjacente à programação em linguagens como o Java é que quanto mais cedo se detectarem erros, mais fácil é corrigi-los e menor o seu impacte Asserções usam-se para expressar condições que devem ser verdadeiras para que o programa esteja correcto Asserções antecipam detecção de erros de programação e melhoram sua localização 2009/2010 31 Programação Orientada por Objectos
  • 33. A reter… A relação das excepções declaradas com a operação em causa deve ser clara e deve ser documentada Detecção de erro de programação ou de erro no ambiente de execução do programa deve levar sistema, se não crítico, a cometer um elegante harakiri, tão simpático para utilizadores quanto possível Um programa honrado percebe quando falha e extingue-se voluntariamente, não deixando que erros se propaguem 2009/2010 Programação Orientada por Objectos 32
  • 34. A ler para as próximas aulas ... Capítulo 18 do livro: Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice-Hall, 2008.ISBN: 978-0-13-605966-0 2009/2010 Programação Orientada por Objectos 33
  • 35. Sumário Erros e casos excepcionais Conceitos Excepções Erros de programação Erros no ambiente de execução Representação, criação, detecção e tratamento Excepções Java Asserções Java Boas práticas (incluindo segurança) 2009/2010 Programação Orientada por Objectos 34