Assert

Alguem sabe explicar qual a logica do comando ASSERT ?

Obrigado.

[code]JAVA: comando assert

* assert Expressao1 [: Expressao2];
* Se Expressao1 for verdadeiro, segue a execução
* Se Expressao1 for falso, lança um AssertionError
* Expressao2 (opcional) é passado para o construtor do AssertionError

JAVA: comando assert

* Uso: pré e pós condições, invariantes e ?salvaguardas?
* Asserções presentes no código podem ser ?ligadas e desligadas?
      o javac -source 1.4 MyClass.java
      o java [-enableassertions | -ea: <packagename>?...?] [classname]

JAVA: comando assert

static void administerInsulin ( ) {

int maxIncrements = InsulinPump.maxDose / 8 ;

int increments = InsulinPump.currentDose / 8 ;

assert currentDose <= InsulinPump.maxDose : Pump.doseHigh;

for (int i=1; i<= increments; i++) {

      generateSignal () ;

      assert i<= maxIncrements : Pump.incorrectIncrements;

} // for loop

} //administerInsulin [/code]

fonte, google - http://www.google.com.br/search?hl=pt-BR&q=comando+assert+java&btnG=Pesquisa+Google&meta=lr%3Dlang_pt

2 curtidas

Serve para você testar pré ou pós condições de sua função, deixando-as explicitas em seu código.

Geralmente, condições desse tipo só tem sentido no momento da programação, não no código do usuário final, por isso, as asserções só estarão disponíveis se a flag -ea for utilizada na VM.

Tem um tutorial do GUJ sobre isso, aqui.

1 curtida

Mais um link interessante sobre o tema:

http://www.javapractices.com/TableOfContents.cjp

  1. Assertions in general
    http://www.javapractices.com/Topic101.cjp

  2. Assert use cases
    http://www.javapractices.com/Topic102.cjp

  3. Assert is for private arguments only
    http://www.javapractices.com/Topic100.cjp

  4. Force enabling of assertions
    http://www.javapractices.com/Topic99.cjp

fw

[quote=civi]Alguem sabe explicar qual a logica do comando ASSERT ?

Obrigado.[/quote]

é quando vc quer avaliar um expressao que tem certeza, que jamais era será false… lembrando que nao é o mesmo que vc pegar um argumento de um metodo public e tentar testar… o uso de assert nao pode gerar efeitos colaterais em seu codigo e jamais ser false, senao é lançada um exceção…
é bem legal vc fazer um debug usando assert caso aquela instrução seja false vc diz a linha 20 foi configurada para false…


assert false : "linha 10 configurada para false ";