que aqui para ler esse artigo em PDF.imagem_pdf.jpg

Asserções no J2SE 1.4

Garanta a qualidade do código por antecipação

Como usar comandos assert para detectar erros mais cedo no desenvolvimento

A versão 1.4 do J2SE é realmente inovadora. Além de muitas mudanças e melhorias nas APIs (como a introdução de logging, expressões regulares e um novo pacote de I/O), foi introduzida uma mudança na linguagem em si: o uso de asserções (assertions).

Asserções são usadas para facilitar a realização de "testes de sanidade" (sanity checks) em uma aplicação. Mais precisamente, servem para testar condições que devem ser sempre verdadeiras (caso a condição seja falsa, existe um bug no código).

Sintaxe

A sintaxe de asserções em Java é muito simples. Uma asserção pode ser feita de duas maneiras:

assert expressão;

ou

assert expressão1: expressão2;

A primeira maneira é equivalente a:

if (!expressão)

   throw new AssertionError();

Ou seja, caso expressão não seja verdadeira, é gerada uma exceção (do tipo AssertionError).

Com a segunda maneira, é necessário passar, além da expressão a ser testada (expressão1), uma descrição (expressão2). O código equivalente é:

if (! expressão1 )

   throw new AssertionError(expressão2);

A expressão2 pode ser qualquer expressão Java, exceto chamadas a métodos void. Como uma asserção só é útil ao desenvolvedor (ou à equipe de suporte técnico da aplicação em produção), não é necessário que a descrição faça sentido para o usuário final.

Veja alguns exemplos de asserções:

·         assert conexao != null;

·         assert !lista.isEmpty(): "lista vazia";

·         assert a > 0: "a <= 0";

Por que a mudança na linguagem?

O leitor pode estar se perguntando por que a linguagem Java foi modificada para realizar uma tarefa que poderia ser feita com uma simples combinação if/throw? Veja alguns motivos para a mudança:

·         Facilidade de uso – é muito mais fácil usar assert do que a combinação if/throw. E quanto mais asserções existirem no código, maiores as chances de serem detectados erros em tempo de desenvolvimento;

·         Flexibilidade – o recurso de asserções pode ser habilitado ou desabilitado em tempo de execução, tanto globalmente quanto em nível de pacotes ou de classes;

·         Desempenho – caso as asserções estejam desabilitadas, o custo em desempenho é praticamente zero (ao contrário da alternativa do if/throw, onde a expressão de teste é sempre avaliada causando impacto significativo).

Usando asserções

Para garantir a máxima compatibilidade com as versões anteriores do J2SE, onde ...

Quer ler esse conteúdo completo? Tenha acesso completo