1
resposta

Acho que essa alternativa está mal formulada.

A exceção só pode ser lançada através da sua referência, por exemplo:

ArithmeticException exception = new ArithmeticException();
throw exception;

Eu acredito que essa afirmativa está correta.

Se olharmos na documentação da linguagem podemos ver:

The throw Statement All methods use the throw statement to throw an exception. The throw statement requires a single argument: a throwable object. Throwable objects are instances of any subclass of the Throwable class. Here's an example of a throw statement.

Ou seja throw recebe um objeto que que pose ser "jogado" e pelo menos até agora a única forma que vimos de passar um objeto é através de sua referência. E das duas formas que vimos na aula estamos passando uma referência.

  1. ArithmeticException exception = new ArithmeticException(); aqui armazenamos a referência na variável e passamos para o throw;
  2. throw new ArithmeticException(); aqui a referência é criada e em seguida já é passada para o throw;

Então se nas únicas formas que vimos até agora estamos passando uma referência acredito que essa afirmativa deveria ser considerada correta.

Eu entendi que a essência da pergunta questiona a necessidade de armazenar a referência a exceção antes de jogá-la e inclusive acertei o exercício mas acredito que conceitualmente ela ficou falha.

1 resposta

Oi Rodrigo,

O foco da questão era realmente sobre armazenar a referência da exceção antes de jogá-la, como você mencionou. Mas o que você disse realmente faz sentido e já atualizamos o texto da atividade para deixar mais claro.

Valeu pelo feedback.