No livro Certificação Java 5 Guia Preparatório, na página 89, na questão 6 temos:
public class AssertTest {
public static void main( String[] args ) {
for( int i = 0; i < 10; i++ ) {
try{
assert i%2 == 0: i--;
System.out.println( "Even Number: " + i );
}
catch( AssertionError ae ) {
System.out.println( "Odd Number: " + ++i );
}
}
}
}
Quando compilo e executo o código, na tela aparece:
Even Number:0
Even Number:1
Even Number:2
Even Number:3
Even Number:4
Even Number:5
Even Number:6
Even Number:7
Even Number:8
Even Number:9
Porém no código tá claro que a assert i%2 será true somente para números pares e false para números ímpares. A questão é: Se o assert será true somente no momento em que i for um número par e no momento em que i é ímpar, logo será executado a expressão --i e a AssertionError vai ser ativada. Então por que não imprime Odd Number: <número> no momemnto em que a exceção acontece?
Desde Já agradeço
Um forte abraço
Deyvid Rannyere Moraes Costa