Preparação OCPJP
Assertions and Exceptions
Mais
informações...
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
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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
Mais
informações…
Obrigado!

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

  • 1.
  • 2.
  • 3.
    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
  • 4.
    Usando Assertivas ● Assertivasprové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.
  • 5.
    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
  • 6.
    Usando Assertivas ● Porpadrã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
  • 7.
    Usando Assertivas ● Sevocê 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.
  • 8.
    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.
  • 9.
    Usando Assertivas ● Nãouse 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.
  • 10.
    Usando Assertivas ● Assertivaspodem 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.
  • 11.
    Try-multi-catch ● Se 2blocos 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.
  • 12.
    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.
  • 13.
    Try-with-resources ● Um try-with-resourcesautomaticamente 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.
  • 14.
    Try-with-resources ● O métodoclose() 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.
  • 15.
    Try-with-resources ● Se maisde 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
  • 16.