关于异常一,熟悉的陌生人:printStackTrace

[size=large]熟悉的陌生人:printStackTrace

当程序运行的时候,如果出现运行期异常,console会打印一堆的错误信息和一堆的类名、方法名,我们根据这些错误信息知道哪个类,哪个方法,甚至哪一行代码出了错误,这些熟悉的错误信息是哪里来的呢:
就是我们熟悉的陌生人printStackTrace()方法。
这个方法继承自Throwable类(所有异常类的老祖宗),可以通过getStackTrace()方法来直接访问,会返回一个由栈轨迹中的元素所构成的数组(java对象是存储在堆中,但是其引用是存储在栈中,所有的引用会作为轨迹存在该数组中),其中每个元素都表示栈中的一帧。元素0是栈顶元素,是调用序列中最后一个方法调用,即这个Throwable被创建和抛出之处。数组中的组后一个元素和栈底是调用序列中最后一个方法调用。[/size]
实例代码:

public 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();}
pulic static void main(String[] args){
f();
System.out.println("-------------");
g();
System.out.println("-------------");
h();
}

}

[size=large]console输出:
f
main
---------------------
f
g
main
---------------------
f
g
h
main
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值