Para verificações em produção, o correto é utilizar-se Exceptions.
Formato:
Existem dois formatos possíveis de assert:
assert
ou
assert
onde:
Exemplos:
true // nunca vai interromper a execução;
false // sempre vai interromper;
x == 0 // só permeite a continuação caso a variável x tenha valor 0;
x.equals(y) // só permite a continuação caso o objeto x seja igual a y;
Exemplos:
"Erro!"
x // caso x seja um int por exemplo, será impresso o seu valor
// caso x seja um objeto será impresso o que estiver definido no método toString()// da respectiva classe (ou superclasse conforme o caso).
Um uso de assert:
No exemplo acima, o uso do método log() da classe Math não permite que o valor de x seja negativo (já que não são definidos logarítmos de números negativos). Nas operações feitas no início do método, o programador acredita ter garantido que o valor de x chegará ao método log() com valor positivo. O assert inserido ali tem a finalidade de verificar essa "certeza" durante a fase de testes do programa. Caso, durante a execução, o valor de x seja negativo, a seguinte mensagem será impressa:public double calculaLog (double x) {
// diversas operações feitas aqui com x e que,
//na visão do desenvolvedor, sempre levarão x a um valor positivo
assert x > 0 : "x não pode ser negativo";
return Math.log (x);
}
Exception in thread "main" java.lang.AssertionError: x não pode ser negativo
at testeenum.Lanchonete.main(Lanchonete.java:19)
Java Result: 1
No entanto, se o valor de x realmente for positivo, o assert será ignorado e a execução do programa continuará normalmente.
Habilitando o processamento de asserts:
Para que o asserts inseridos no código seja processados pela JVM, é necessário incluir a opção durante a execução do programa. Na execução pela linha de comando, deve-se inserir a opção -ea ou -enableasserts na chamada da JVM:
java -ea Calcula ou java -enableasserts Calcula
Por definição essa opção fica em "off" a menos que seja ligada. Apesar de não fazer muito sentido, pode-se optar por desligar-se manualmente o processamento de asserts com a opção -da ou -disableassertions.
Uma combinação interessante pode ser feita quando deseja-se habilitar o processamento no programa mas desabilitá-lo em uma classe específica:
java -ea -da:Calcula
Como esse blog é para aviões e Java, o próximo post deverá ser sobre aviões :)
Até lá...
Nenhum comentário:
Postar um comentário