На этот раз я хочу получить аннотацию из сгенерированного исключения.
Мой пример кода выглядит так:
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), как получить аннотацию?
Это все мои вопросы. Спасибо, что потратили время на чтение.