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)
在你打电话的特定点:
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
Run Code Online (Sandbox Code Playgroud)
您的"反射调用"已经完成,这反映在您从通话中返回的调用堆栈中.听起来更像你想要的:
iTE.getCause().getStackTrace();
Run Code Online (Sandbox Code Playgroud)
这将为您提供调用堆栈,包括实际抛出异常的方法.
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |