На этот раз я хочу получить аннотацию из сгенерированного исключения. Мой пример кода выглядит следующим образом:
public class P {
@MyAnnotation(stringValue = "FirstType", intValue = 999)
public void test() throws Exception {
// ...
throw new NullPointerException();
}
@MyAnnotation(stringValue = "SecondType", intValue = 111)
public void test(int a) throws Exception {
// ...
throw new NullPointerException();
}
}
Приведенный выше класс содержит 2 метода, и оба из них генерируют исключение NullPointerException.
Теперь я могу использовать callerElement, чтобы получить исключение и узнать имя пакета, имя класса и номер строки, которые вызывают исключение. Вот мой код:
public class CallP {
public static void main(String[] argv){
P class_p = new P();
StackTraceElement[] callerElement = null;
try{
class_p.test();
}catch(Exception e){
callerElement = e.getStackTrace();
System.out.println(callerElement[0].toString());
}
}
}
В окне консоли я вижу сообщение
StackoverflowQuestion.P.test (P.java:9)
Мои вопросы 1. Как получить аннотацию в предложении catch? 2. При перегрузке метода (в классе P у меня есть два метода, называемых test), как получить аннотацию?
Это все мои вопросы. Спасибо, что потратили время на чтение.