【Java】堆栈跟踪

堆栈跟踪是编程中的重要概念,它记录了方法调用的顺序。当方法A调用B,B调用C,C调用D时,要退出B必须先退出C和D,这就像堆栈中的元素取出顺序。Java中,机器通过堆栈来存储函数调用的状态,每个栈帧包含方法信息。可以通过获取并显示当前调用堆栈来查看方法调用路径,遍历堆栈帧并输出方法名称来理解其工作原理。

堆栈跟踪

Java 为此有一个特殊集合 - 堆栈。这个集合中有多种方法可 “添加元素” 和 “获取元素

Java 程序中,方法 A 调用 方法 B方法 B 调用 方法 C方法 C 接着调用 方法 D 。如要退出 方法 B,我们必须首先退出方法 C ,退 方法 C 就要首先退出方法 方法 D。这种行为就像一个 堆栈

堆栈是一组元素,像一堆纸一样。要从最上层拿起第三张纸,你首先需要拿第二张纸,为此,你需要拿第一张纸。你总是可以放纸和抽纸,但始终必须先获取最上面的纸。

函数调用也是如此。**方法 A **调用 方法 B方法 B 又调用方法 C。要退出 方法 A,你必须先退出 方法 B,而退出 方法 B 又要退出 方法 C

函数调用的顺序称为 “调用堆栈” ,或简称为 “堆栈”。最后一个调用的函数是第一个终止的函数

获取并显示当前调用堆栈:

public class ExceptionExample
{
  public static void main(String[] args)
  {
    method1();
  }

  public static void method1()
  {
    method2();
  }

  public static void method2()
  {
    method3();
  }

  public static void method3()
  {
    StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
    for (StackTraceElement element : stackTraceElements)
    {
       System.out.println(element.getMethodName());
    }
  }
}

结果:

getStackTrace
method3
method2
method1
main

Java 机器跟踪所有函数调用。为此,它有一个特殊的集合 - 堆栈。当一个函数调用另一个,则 Java 机器在堆栈中放入一个新的 StackTraceElement 对象。函数完成后,该元素会从堆栈中移除。这意味着堆栈始终存储 “函数调用堆栈” 当前状态的最新信息。

每个 StackTraceElement 对象包含所调用方法的信息。特别是,你可以使用 getMethodName 方法获取方法名称。

从上述示例中可看出它的工作原理:

​ 1) 我们获取了调用堆栈。

​ 2) 我们使用 for-each 循环来遍历。你最好没忘记那个概念。

​ 3) 我们将方法名称输出到 System.out

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Warolitbos

如果有帮助,请我喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值