✅ Stack Trace Elements in Java
A stack trace is a report of the active stack
frames at a particular point in time during the execution of a program. Each
line of the stack trace represents one method call that was made, starting from
the original entry point to the point where the exception occurred.
📌 What is StackTraceElement?
The StackTraceElement class provides information about the methods on the stack at the time an
exception was thrown. It includes details such as:
- Class name (getClassName())
- Method name (getMethodName())
- File name (getFileName())
- Line number (getLineNumber())
📌 Example of Using
StackTraceElement
Here's a simple program demonstrating how to access
and print stack trace elements.
public class
StackTraceExample {
public static void main(String[] args) {
try {
method1();
} catch (Exception e) {
// Print the entire stack trace
e.printStackTrace();
System.out.println("\n---
Displaying Stack Trace Elements ---");
// Retrieve stack trace elements as
an array
StackTraceElement[] elements =
e.getStackTrace();
for (StackTraceElement element :
elements) {
System.out.println("Class
Name: " + element.getClassName());
System.out.println("Method
Name: " + element.getMethodName());
System.out.println("File
Name: " + element.getFileName());
System.out.println("Line
Number: " + element.getLineNumber());
System.out.println("-------------------------------------");
}
}
}
static void method1() {
method2();
}
static void method2() {
method3();
}
static void method3() {
int result = 10 / 0; // This will cause ArithmeticException
}
}
📌 Output
java.lang.ArithmeticException:
/ by zero
at
StackTraceExample.method3(StackTraceExample.java:21)
at
StackTraceExample.method2(StackTraceExample.java:17)
at
StackTraceExample.method1(StackTraceExample.java:13)
at
StackTraceExample.main(StackTraceExample.java:7)
--- Displaying
Stack Trace Elements ---
Class Name:
StackTraceExample
Method Name:
method3
File Name:
StackTraceExample.java
Line Number: 21
-------------------------------------
Class Name:
StackTraceExample
Method Name:
method2
File Name:
StackTraceExample.java
Line Number: 17
-------------------------------------
Class Name:
StackTraceExample
Method Name:
method1
File Name:
StackTraceExample.java
Line Number: 13
-------------------------------------
Class Name:
StackTraceExample
Method Name: main
File Name:
StackTraceExample.java
Line Number: 7
-------------------------------------
📌 Explanation
- The method3() tries to
perform a division by zero, which triggers an ArithmeticException.
- The catch block
captures the exception and prints its stack trace using e.printStackTrace().
- The program then accesses individual stack trace elements using the getStackTrace() method and displays detailed information.
📌 Why is StackTraceElement Useful?
- Debugging: Helps trace the exact point where an error
occurred.
- Logging Systems: Custom
logging frameworks use it for detailed error reporting.
- Profiling and Analysis: Provides
insights into the execution flow of complex programs.
No comments:
Post a Comment