Java中Reflected方法的异常堆栈跟踪

Viv*_*vek 0 java reflection stack-trace

我通过反射调用一个方法,它抛出一个异常.

但是当我通过堆栈跟踪时

StackTraceElement[] elements = Thread.currentThread().getStackTrace();
Run Code Online (Sandbox Code Playgroud)

我没有得到整个堆栈跟踪到反射方法.它只获得堆栈跟踪uptil我实现反射的方法.

反映的课程完全在一个不同的项目中.

编辑:添加代码段

项目A.

Class ReflectionImpl {

   public void callMethodsviaReflection{
     try{
              // Reflection code to call the method

         }catch(InvocationTargetException iTE){

           StringBuilder errorLogBuilder = new StringBuilder();
            errorLogBuilder.append(ex.toString());
            errorLogBuilder.append("\n");

            StackTraceElement[] elements = Thread.currentThread().getStackTrace();

             for (int i=0;i<elements.length;i++) {

                 errorLogBuilder.append((elements[i].toString()));
                 errorLogBuilder.append("\n");
             }

            System.out.println(errorLogBuilder.toString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

项目B - > 参考Eclipse中的项目A.

Class ReflectedClass{

 List<String> nameList = null;

 public void reflectedMethod(){

     nameList.add("Hello");
    }      
}
Run Code Online (Sandbox Code Playgroud)

Per*_*ion 8

在你打电话的特定点:

StackTraceElement[] elements = Thread.currentThread().getStackTrace();
Run Code Online (Sandbox Code Playgroud)

您的"反射调用"已经完成,这反映在您从通话中返回的调用堆栈中.听起来更像你想要的:

iTE.getCause().getStackTrace();
Run Code Online (Sandbox Code Playgroud)

这将为您提供调用堆栈,包括实际抛出异常的方法.