您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】获取并打印当前堆栈的方法

星拱北辰 发布时间:2020-02-25 20:41:08 ,浏览量:0

原理

我们在最初接触异常的时候,就会 try…catch… 语句:

try {
    //可能导致异常的操作
} catch (Exception e) {
    e.printStackTrace();
}

当然这种 CatchAll 的做法不是很好,但确实打印了异常栈。 程序因异常而中断,却不能够得到处理,只能抛出异常,按“要求”打印异常栈。

我们也知道 Throwable 是 Exception 的基类,所以参考异常栈打印的原理,使用Throwable对象获取当前的程序运行堆栈,获取的对象是StackTraceElement类型的一个数组,也就是一个一个的StackTraceElement对象。

然后做一下判空,就可以遍历并打印了。

编程实现与测试
public class CallStack {

    private static void printCallStack() {
        Throwable exception = new Throwable();
        StackTraceElement[] stackTraceElements = exception.getStackTrace();
        if (stackTraceElements != null) {
            for (StackTraceElement element : stackTraceElements) {
                System.out.println(element.getClassName() + "/t" +element.getFileName() + "/t" + element.getLineNumber()
                        + "/t" +element.getMethodName());
                System.out.println("-----------------------------------");
            }
        }
    }

    public static void main(String[] args) {
        printCallStack();
    }
    
}
运行结果

将程序放在D盘根目录下,用cmd运行: 在这里插入图片描述

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0401s