16
Preparação OCPJP Assertions and Exceptions

Visão geral sobre Assertivas e Exceções no Java7

Embed Size (px)

Citation preview

Page 1: Visão geral sobre Assertivas e Exceções no Java7

Preparação OCPJPAssertions and Exceptions

Page 2: Visão geral sobre Assertivas e Exceções no Java7

Mais informações...

Page 3: Visão geral sobre Assertivas e Exceções no Java7

Objetivos da Certificação● Testar invariantes usando Assertions● Desenvolver código que trata multiplos tipos

de Exceções em apenas um bloco catch● Desenvolver código que usa blocos try/catch

com recursos (incluindo o uso de classes que implementam a interface AutoClosable

Page 4: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Assertivas provém uma forma de testar suas

suposições durante o desenvolvimento ou debug

● Assertivas são geralmente habilitadas durante os testes, mas desabilitadas durante a implantação.

Page 5: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Você pode usar assert como uma palavra

chave ou identificador, mas não os 2 ao mesmo tempo. Para compilar códigos legados que usam assert como identificador você deve usar a flag -soucr 1.3 junto com o comando javac

Page 6: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Por padrão assertivas são desebilitadas em

tempo de execução. Para habilitá-las, use a flag -ea ou -enableassertions

● Desabilite seletivamente assertivas usando a flag -da ou -disableassentions

Page 7: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Se você habilita ou desabilita assertivas

usando a flag sem nenhum argumento, você está habilitando ou desabilitando assertivas em geral. Você pode combinar habilitar ou desabilitar assertivas em apenas algumas classes ou pacotes e não no restante do código.

Page 8: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Você pode habilitar ou desabilitar assertivas

classe a classe usando a seguinte sintaxe:java -ea -da:ClasseDesabilitada ClasseTeste

● Não use assertivas para validar argumentos em método públicos.

Page 9: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Não use expressões assertivas que causem

efeitos colaterais. Assertivas não tem garantia de que sempre serão executadas, o comportamento de seu programa não deve mudar devido a assertivas estarem habilitadas ou não.

Page 10: Visão geral sobre Assertivas e Exceções no Java7

Usando Assertivas● Assertivas podem ser usadas (mesmo em

métodos públicos) para validar uma código em particular que nunca deverá ser executado. Você pode usar assert false; para código que nunca deveria ser alcançado, assim a AssertionError é lançada imediatamente se o assert for executado.

Page 11: Visão geral sobre Assertivas e Exceções no Java7

Try-multi-catch● Se 2 blocos cath lidam com a exceção da

mesma forma, você pode juntá-los com um multi-catch usando:

catch (Exceptio1 | Exception2 ex){ };● Os tipos em multi-catch não podem ser

subclasses uns dos outros.

Page 12: Visão geral sobre Assertivas e Exceções no Java7

Try-multi-catch● Se você pegar uma exceção geral como atalho

para exceções subclasse específica e relançar a exceção, você ainda pode listar as subclasses específicas na assinatura do método. O compilador irá tratá-los como se você os tivesse listado fora do catch.

Page 13: Visão geral sobre Assertivas e Exceções no Java7

Try-with-resources● Um try-with-resources automaticamente

chama o método close() de qualquer recurso declarado no try. Exemplo:

try (AutoClosable c = new Recurso())● Um bloco try deve ter pelo menos um bloco

catch ou um finally, a menos que seja um try-with resources.

Page 14: Visão geral sobre Assertivas e Exceções no Java7

Try-with-resources● O método close() da interface AutoClosable

lança Exception e deve ser idempotente.● O método close() da interface Closable lança

IOException e não precisa ser idempotente.● Os recursos são fechados em ordem inversa a

sua criação e antes da execução de um possível bloco catch ou finally.

Page 15: Visão geral sobre Assertivas e Exceções no Java7

Try-with-resources● Se mais de uma exceção é lançada em um

bloco try-with-resources, é adicionada uma exeção suprimida.

● O tipo usado em um bloco try-with-resources deve implementar AutoClosable* Closable estende de AutoClosable

Page 16: Visão geral sobre Assertivas e Exceções no Java7

Mais informações…

Obrigado!