Questão Asserções

9 respostas
diego2005

Pessoal não entendi a resposta da seguinte questão:

Given:

public class TesteAssert
{
   public static void main(String[] args)
   {
      int x = 0;

      assert(x > 0): "assertion failed";

      System.out.println("finished");
   }
}

What is the result?

A. finished
B. Compilation fails
C. An AssertionError is thrown
D. An AssertionError is thrown and finished is output.

Pra mim a resposta correta seria a letra D.

Alguém pode me falar a resposta correta e o por que???

Valeu....

9 Respostas

ciczan

A certa é a C.

Não sei explicar isso muito didaticamente mas vou tentar:
Quando uma Exceção é lançada o fluxo do programa é interrompido e vai subindo na pilha de métodos chamados (stack), até que seja capturado, ou o programa acabe.
Neste caso é ainda pior, porque é uma Exceção que extende Error, que não tem como capturar. O programa cai na hora.

rodrigo_lm

???

Não entendi, rodei aqui o codigo e deu a alterantiva A

ciczan

É que as asserções são desabilitadas por default, uma vez que são para serem usadas no desenvolvimento. Tente passar o argumento -ea para a VM na inicialização.

diego2005

Pois é, a resposta do simulado é a A, mas ainda não estou concordando com isso, queria que alguém explicasse melhor…

jgbt

A resposta deve estar no enunciado da questão. se as asserções não estiverem habilitadas a resposta certa vai ser a A. de uma olhada no enunciado. Sempre lembrando que o default é desabilitado.

[]'s

diego2005

O enunciado é esse mesmo que passei:

Given:

What is the result?

jgbt

diego2005:
O enunciado é esse mesmo que passei:

Given:

What is the result?

então a resposta certa é a A. por default as Asserções são desabilitadas, sendo assim o trecho de codigo com a Asserção vai ser ignorado.

[]'s

ciczan

Então é A mesmo. Na prova de certifição você deve considerar que nenhum argumento foi passado à VM a não ser que se diga o contrário no enunciado.

diego2005

Ah sim, ok.

Mas e se tivesse no enunciado que as asserções fossem habilitadas, qual seria a resposta correta???

Criado 7 de agosto de 2006
Ultima resposta 7 de ago. de 2006
Respostas 9
Participantes 4