Throwable.fillInStackTrace()的用法
来源:互联网 发布:网络传销一般崩盘时间 编辑:程序博客网 时间:2024/04/19 16:48
fillInStackTrace这个方法还是很有特点的,竟然能够一直追踪调用自己的那些方法,甚至java的行数,本想仔细看看源代码的,没想到竟然是native的方法,而且api文档中只有一句话,实在是让人很难知道它的真正用法。do了一下research之后,有一些心得。
package exceptions;
public class ThrowableTest3 {
Throwable th = new Throwable();;
public ThrowableTest3() {
System.out.println("in constructor");
}
public void a()
{
c();
}
public void b()
{
System.out.println("in b");
th.fillInStackTrace();
th.printStackTrace(System.out);
System.out.println("in b");
}
public void c()
{
b();
th.fillInStackTrace();
System.out.println("in c");
th.printStackTrace(System.out);
System.out.println("in c");
}
public static void main(String [] args)
{
ThrowableTest3 t3 = new ThrowableTest3();
t3.a();
}
}
用printStackTrace(System.out)的原因是为了让打印更加的整洁。
结论:
fillInStackTrace每次执行的时候,会清空原来的栈内的trace信息。然后在当前的调用位置处重新建立trace信息, 所以在方法b()中printStackTrace的执行结果跟c()中的是不一样的。
b()方法被c()调用,c()被a()调用,a()被main()调用, 所以在b()中fillInStackTrace时,栈内会包含b(), a(), main()的信息;而在c()中调用fillInStackTrace时,栈内的信息会被刷新为c(), a(), main()。
- Throwable.fillInStackTrace()的用法
- Throwable.fillInStackTrace()的用法
- Throwable.fillInStackTrace
- Throwable中的fillInStackTrace
- 重载Throwable.fillInStackTrace方法已提高Java性能这样的做法对法?
- 重新抛出异常与 public Throwable fillInStackTrace()
- 重新抛出异常与 public Throwable fillInStackTrace()
- 关于e.fillInStackTrace()的理解
- 对Throwable的处理
- throwable的子类
- Throwable
- 异常类的fillInStackTrace()方法--异常的信息丢失
- Throwable和Exception的区别
- Throwable类的详细解释
- Throwable的几个常见方法
- Throwable和Exception的区别
- Throwable和Exception的区别
- Throwable和Exception的区别
- hashMap的2中遍历方式比较
- Django 加密模块的应用
- Eclipse 配置 启动优化 快捷键
- 老外对pro中Install阐述
- 《Unix编程艺术》chm 电子书下载
- Throwable.fillInStackTrace()的用法
- Android Socket编程android端服务器和客户端的实现
- Android反射机制实现与原理
- hadoop深入研究:(三)——hdfs数据流
- Xml 转 数组
- linux 服务器时间函数
- hibernate执行sql语句,转换为MAP
- Java Socket实战之六 使用NIO包实现Socket通信
- 开源框架MVVM Light Toolkit for wpf/silverlight系列