class WhoCalled{
static void f(){
try{
throw new Exception();
}catch(Exception e){
for(StackTraceElement ste : e.getStackTrace())
System.out.println(ste.getMethodName());
}
}
static void g(){
f();
}
static void h(){
g();
}
public static void main(String[] args){
f();
System.out.println("----------");
g();
System.out.println("----------");
h();
System.out.println("----------");
}
}
在foreach语法里面有不明白的地方,讲解一下。
for(StackTraceElement ste : e.getStackTrace())
System.out.println(ste.getMethodName());
遍历整个异常栈空间然后输出
List 对象也可以这样遍历
for(User user:List)
借用一下先前一位大哥的话“这是java5.0的新特性for循环遍历数组和集合
for(StackTraceElement ste : e.getStackTrace())
e.getStackTrace()就是要遍历的集合对象
StackTraceElement ste 就是遍历出来的对象引用
”
还想补充下,简单的说,就是当try里面出现了异常,在catch里就使用StackTraceElement ste 找e.getStackTrace()对象集合里的所有对象,以查看出现的异常(try里面出现的异常)的准确的异常类,以便输出最佳的错误提示来更好的解决问题。
这是java5.0的新特性for循环遍历数组和集合
for(StackTraceElement ste : e.getStackTrace())
e.getStackTrace()就是要遍历的集合对像
StackTraceElement ste 就是遍历出来的对象引用