이번에 나는 던져진 예외에서 주석을 얻고 싶습니다. 내 예제 코드는 다음과 같다 :Java에서 예외 메소드를 검색하여 주석을 얻는 방법은 무엇입니까?
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();
}
}
위의 클래스는이 방법을 포함하고 둘 다 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)이있을 때, 주석을 얻는 방법은 무엇입니까?
그건 제 질문입니다. 독서에 시간을내어 주셔서 감사합니다.
안녕하세요, Adeel Ansari. callerElement [0] .getMethodName()을 사용하여 메서드 이름을 가져올 수 있습니다. 그러나, 나는 어느 것이 내가 얻고 싶은 것인지 알 수 없다 (나는 두 가지 "시험()"을 가진다). –
@Charles : 예, 맞습니다. 우리가 그것을 찾을 수있는 방법은 없습니다. 유일한 차이점은 행 번호입니다. 그리고 우리가 원하는 메소드와 주석을 얻기 위해 그것을 사용할 수 있다면 의심 스럽습니다. –