Java Throwable getStackTrace()方法与示例
抛出类getStackTrace()方法
getStackTrace()方法在java.lang包中可用。
getStackTrace()方法用于返回一个StackTraceElement数组,并且数组中的每个元素都表示一个堆栈帧。
如我们所知,数组的第一个元素表示堆栈的顶部,数组的最后一个元素表示堆栈的底部(即,在序列中,调用的最后一个方法代表堆栈的顶部,在序列中,第一个方法表示堆栈的顶部调用的方法表示堆栈的底部)。
getStackTrace()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。
在将方法调用维护到堆栈上时,getStackTrace()方法不会引发异常。
语法:
public StackTraceElement[] getStackTrace();
参数:
它不接受任何参数。
返回值:
该方法的返回类型为StackTraceElement[],它返回一个堆栈跟踪元素数组,该数组表示方法调用到堆栈上的跟踪。
示例
//Java程序演示示例
//Throwable的StackTraceElement方法
public class GetStackTrace {
public static void main(String args[]) {
try { stackTraceMethod();
} catch (Throwable ex) {
//通过使用getStackTrace()方法是获取
//堆栈跟踪元素
StackTraceElement[] st_tr = ex.getStackTrace();
System.err.println("st_tr[0].toString()" + st_tr[0].toString());
}
}
public static void stackTraceMethod() throws Throwable {
int li_nu = 7;
//实例化一个新的异常
//可投掷
Throwable th = new Throwable("Raise New Exception");
StackTraceElement[] st_tr = new StackTraceElement[] {
new StackTraceElement("cl_na", "me_na", "fu_na", li_nu)
};
//通过使用setStackTrace()方法是设置
//堆栈中的元素
th.setStackTrace(st_tr);
throw th;
}
}输出结果
st_tr[0].toString()cl_na.me_na(fu_na:7)