Dúvida questão Testkiller - assert

Não entendi essa questão:

Question 67
Given:
23.int z=5;
24.
25. public void stuff1(int x) {
26. assert (x> 0);
27. switch(x) {
28. case 2: x= 3;
29. default: assert false; } }
30.
31. private void stuff2(int y) { assert (y < 0); }
32.
33. private void stuff3() { assert (stuff4()); }
34.
35. private boolean stuff4() { z = 6; return false; }
Which is true?
A. All of the assert statements are used appropriately.
B. Only the assert statement on line 31 is used appropriately.
C. The assert statements on lines 29 and 31 are used appropriately.
D. The assert statements on lines 26 and 29 are used appropriately.
E. The assert statements on lines 29 and 33 are used appropriately.
F. The assert statements on lines 29, 31, and 33 are used
appropriately.
G. The assert statements on lines 26, 29, and 31 are used
appropriately.

Answer: C

Qual o problema dos assert das linhas 26 e 33 ?

dar uma olhada nas regras assert e tenta descobrir pq a 26 e 33 nao sao falsas!!

Bom eu poderia dar a resposta para vc… mais como estar se preparando para certificacao, vc tirar suas proprias conclusoes, a partir da leitura das regras de acordo com a sintaxe dada, vc acaba aprendendo mais que apenas eu ti dizer… ja que no exame vc vai ter q fazer isso todo o tempo, lembrar das regras, e aplicar na sintaxe da questao…

flw!! caso fique com duvida, so gritar!!
bons estudos!

[quote=Java Player]Não entendi essa questão:

Question 67
Given:
23.int z=5;
24.
25. public void stuff1(int x) {
26. assert (x> 0);
27. switch(x) {
28. case 2: x= 3;
29. default: assert false; } }
30.
31. private void stuff2(int y) { assert (y < 0); }
32.
33. private void stuff3() { assert (stuff4()); }
34.
35. private boolean stuff4() { z = 6; return false; }
Which is true?
A. All of the assert statements are used appropriately.
B. Only the assert statement on line 31 is used appropriately.
C. The assert statements on lines 29 and 31 are used appropriately.
D. The assert statements on lines 26 and 29 are used appropriately.
E. The assert statements on lines 29 and 33 are used appropriately.
F. The assert statements on lines 29, 31, and 33 are used
appropriately.
G. The assert statements on lines 26, 29, and 31 are used
appropriately.

Answer: C

Qual o problema dos assert das linhas 26 e 33 ?[/quote]

Acho que esta questão caiu na minha prova quando eu fiz a SCJP. Se não foi esta, foi uma bem parecida.

Agora entendi.

A linha 26 é inapropriada pq está validando o argumento de um método público. O ideal seria lançar uma IllegalArgumentException.

E a linha 33 é inapropriada pq causa um efeito colateral.

Já tinha esquecido dessas regras de asserts.

[quote=Java Player]Agora entendi.

A linha 26 é inapropriada pq está validando o argumento de um método público. O ideal seria lançar uma IllegalArgumentException.

E a linha 33 é inapropriada pq causa um efeito colateral.

Já tinha esquecido dessas regras de asserts.[/quote]

o exame cobra em cima das regras!! questoes de assert desconfiei quando parecer obvias as respostas!!