📜  打印堆栈跟踪的Java程序

📅  最后修改于: 2022-05-13 01:55:02.090000             🧑  作者: Mango

打印堆栈跟踪的Java程序

考虑一个书架,书架上的书叠放在一起。现在,如果此人想要阅读他首先放置的书,则需要移除第一本书上的所有书以到达所需的书。那是放在开头的那本书。计算机以这种方式存储称为元素的书籍的方法称为堆栈。

它是一种抽象数据类型,具有以下操作:

Operations

Action

push()Inserting elements 
pop()Deleting elements
isEmpty()To check if the stack is empty
isFull()To check if the stack is already full
top() OR peek()To access top element from the stack

现在根据 Stacks 中的函数,一个 在 3 种情况下抛出异常:

  • 如果在调用push 时堆栈已满
  • 弹出以移除并返回堆栈顶部的值
  • 如果调用pop 时堆栈为空。

为了打印异常,此数据结构有一种称为printstackTrace()的方法它在特定异常的异常处理程序中用于处理异常。这是 Java 的 throwable 类的一种方法,它打印可抛出的 Exception 对象以及其他信息,例如发生异常的行号和发生异常的类名。 Throwable 是所有异常类的超类。

下面讨论了两个堆栈跟踪:

  1. 单线堆栈跟踪
  2. 多行堆栈跟踪

A. 单行堆栈跟踪:大多数通用异常都属于这一类。 有几个例外,但为了实现部分“ ArrayIndexOutOfBound ”被考虑到实现

Java
// Importing Classes/Files
import java.io.*;
 
class GFG {
 
    // Main Driver Method
    public static void main(String[] args)
    {
        // Inserting elements into array
        int a[] = { 1, 2, 3 };
 
        // Try-Catch Block
        try {
            // Exception occurs
            System.out.println(a[5]);
        }
 
        // Try-Catch Block
        catch (ArrayIndexOutOfBoundsException e) {
 
            // Printing Exception Object as well as
            // the line where Exception occur
            e.printStackTrace();
        }
    }
}


Java
// Importing Classes/Files
import java.io.*;
 
class GFG {
 
    // Creating random function to test
    static void check2()
    {
        // Try-catch block for exception
        try {
           
            int a = 5 / 0;
            // Exception occur as logically
            // In math '/' operatop satisfies x/y where y!=0
        }
 
        // Catch Block to catch exception if occurs
        catch (Exception e) {
           
            // retrace all the path where this function call
            e.printStackTrace();
        }
    }
 
    // calling  the function check2()
    static void check() { check2(); }
   
    // Driver Main Method
    public static void main(String[] args)
    {
        check(); // calling the function check()
    }
}


运行时错误:

java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3
    at GFG.main(File.java:9)

B. 多行堆栈跟踪:这种情况发生在我们将内部函数函数,并且如果任何函数抛出异常,则使用printstackTrace()方法回溯它调用的所有路径。

Java

// Importing Classes/Files
import java.io.*;
 
class GFG {
 
    // Creating random function to test
    static void check2()
    {
        // Try-catch block for exception
        try {
           
            int a = 5 / 0;
            // Exception occur as logically
            // In math '/' operatop satisfies x/y where y!=0
        }
 
        // Catch Block to catch exception if occurs
        catch (Exception e) {
           
            // retrace all the path where this function call
            e.printStackTrace();
        }
    }
 
    // calling  the function check2()
    static void check() { check2(); }
   
    // Driver Main Method
    public static void main(String[] args)
    {
        check(); // calling the function check()
    }
}

运行时错误:

java.lang.ArithmeticException: / by zero
    at GFG.check2(File.java:11)
    at GFG.check(File.java:7)
    at GFG.main(File.java:19)