Java

Saturday, July 08, 2006

 

Assertions

Assertions serve para que, durante o desenvolvimento do código, possamos verificar se certas condições supostas pela lógica do programa estão sendo satisfeitas. Por exemplo, suponha que um determinado método supostamente não recebe como argumento um inteiro negativo:

private void fazAlgo(int x){
assert(x>=0);
//fazAlgo
}

Se x não for maior ou igual a zero, uma exceção AssertionError será lançada. Essa exceção não deve ser capturada. Ela indica um erro na lõgica de programação.

Pode-se adicionar comentários que serão incorporados ao trace de erros.

private void fazAlgo(int x)}
assert(x>=0): "valor de x: "+x;
//fazalgo
}

A segunda expressão no assert pode ser qualquer objeto que será resolvido
em uma expressão String pelo método toString().

Assertions não devem ser usados em métodos públicos, salvo raras exceções.

Assertions foram incorporadas ao java a partir da versão 1.4. Antes disso, a palavra "assert" não era um keyword. Desta modo, era permitido que "assert" fosse um identificador. Para usar compiladores modernos >= java-1.4 sobre códigos antigos, que usam assert como identificador, devemos indicar ao compilador que se trata de um código antigo:

#javac -source 1.3 fonte_antigo.java

Caso contrário, haveria erro de compilação.

Asssertions devem ser habilitados ou desabilitados durante a chamada do progorama:

#java -ea Program

Podemos habilitar ou desabilitar seletivamente pacotes e classes:

#java -ea com.acme... Program //habilita assertions para todas as classes de acme em diante
#java -ea com.acme.Big Program //habilita assertions somente para as classes de Big
#java -da Program //desabilita assertions para Program (comportamento default)
#java -ea com.acme.Big -da Program //habilita assertions para as classes de Big, mas desabilita para Program

Archives

March 2006   April 2006   May 2006   July 2006   August 2006  

This page is powered by Blogger. Isn't yours?