Então no caso o método Constructor.newInstance() lança uma InvocationTargetException caso uma exceção seja lançada dentro da pilha de execução obrigando o desenvolvedor a envolver com o try/catch ou a colocar na declaração do metodo?
Então no caso o método Constructor.newInstance() lança uma InvocationTargetException caso uma exceção seja lançada dentro da pilha de execução obrigando o desenvolvedor a envolver com o try/catch ou a colocar na declaração do metodo?
É isso mesmo Caio, dê uma olhada na diferença da documentação:
public T newInstance()
throws InstantiationException,
IllegalAccessException
Constructor< T >.newInstance()
public T newInstance(Object... initargs)
throws InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
Enquanto o Class
somente informa, através do throws
, exceções relacionadas a criação da instância, o Constructor
informa se houve uma exceção dentro do construtor (InvocationTargetException
), além das outras exceções relacionadas a criação da instância.
Para saber qual a exceção gerada pelo construtor, você pode usar:
try {
controleClasse1.getDeclaredConstructor().newInstance();
} catch (InvocationTargetException e)
e.printStackTrace();
System.out.println(e.getTargetException()); \\ <----- aqui
}