Olá, pessoal
Nesse exercício o professor propõe essa solução para que a classe faça um throw
na exceção do método invocado.
public static void chamarTestes(Object obj) throws Exception{
Class<?> clazz = obj.getClass();
for(Method m : clazz.getMethods()){
if(m.getName().startsWith("test") &&
m.getReturnType() == void.class &&
m.getParameterTypes().length == 0){
try{
m.invoke(obj);
}catch(InvocationTargetException ex){
throw ex.getTargetException();
}
}
}
}
Porém esse código não pode nem ser compilado uma vez que o método getTargetException retorna um Throwable
e não um Exception
, desse modo acredito que o certo seria:
public static void chamarTestes(Object obj) throws Throwable{
Class<?> clazz = obj.getClass();
for(Method m : clazz.getMethods()){
if(m.getName().startsWith("test") &&
m.getReturnType() == void.class &&
m.getParameterTypes().length == 0){
try{
m.invoke(obj);
}catch(InvocationTargetException ex){
throw ex.getTargetException();
}
}
}
}
Um abraço!