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,
IllegalAccessExceptionConstructor< T >.newInstance()
public T newInstance(Object... initargs)
throws InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetExceptionEnquanto 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
}