que aqui para ler esse artigo em PDF.
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 ...