Preparação OCPJPAssertions 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!
Top Related