打印堆栈跟踪的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 是所有异常类的超类。
下面讨论了两个堆栈跟踪:
- 单线堆栈跟踪
- 多行堆栈跟踪
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)