Bu sefer, ek açıklamadan atılan istisnayı almak istiyorum. Benim örnek kod şu şekildedir:Java'da istisna yöntemini alarak ek açıklama nasıl alınır?
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();
}
}
yukarıdaki sınıf 2 yöntemlerini içerir ve her ikisi de NullPointerException atmak.
Artık istisnayı geri almak ve paketin adını, sınıf adını ve istisna neden olan satır numarasını öğrenmek için callerElement öğesini kullanabilirim. İşte benim kodudur: Benim konsol penceresinde
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());
}
}
}
, iletiyi
StackoverflowQuestion.P.test (P.java:9)
Sorularım olduklarını görebilirsiniz 1. Ekleme deyiminde ek açıklama nasıl alınır? 2. Metod aşırı yüklendiğinde (P sınıfında, test denen iki yönteme sahibim), ek açıklama nasıl alınır?
Bu benim bütün sorularım. Okuma için zaman ayırdığınız için teşekkürler.
Merhaba, Adeel Ansari. Yöntem adını almak için callerElement [0] .getMethodName() öğesini kullanabilirim. Ancak, hangisini almak istediğimi (iki tane "test()") biliyorum. –
@Charles: Evet haklısınız. Bunu öğrenmenin bir yolu yok. Tek fark, satır numarasıdır. Ve şüpheliyim ki, istediğimiz yöntemi ve ek açıklamalarını almak için bunu kullanabilirsek. –