Throwable setStackTrace() method in Java with Examples
Last Updated :
16 Dec, 2021
The setStackTrace(StackTraceElement[] stackTrace) method of Throwable class is used to Set the stack trace elements to this throwable object and this stack trace will be returned by getStackTrace() and printed by printStackTrace() and related methods. This method allows the user to override the default stack trace that is either generated by fillInStackTrace() when a throwable is constructed or deserialized when a throwable is read from a serialization stream.
If the stack trace of any Throwable is not writable then calling this method has no effect other than validating its argument.
Syntax:
public void
setStackTrace(StackTraceElement[] stackTrace)
Parameters: This method accepts only one parameter stackTrace which is the stack trace elements to be associated with this Throwable.
Returns: This method does not returns anything.
Below programs illustrate the setStackTrace() method:
Example 1:
Java
import java.io.*;
class GFG {
public static void main(String[] args)
throws Exception
{
try {
testException1();
}
catch (Throwable e) {
StackTraceElement[] trace = e.getStackTrace();
System.out.println(trace[ 0 ].toString());
}
}
public static void testException1()
throws Exception
{
Exception ex = new Exception();
StackTraceElement[] trace = new StackTraceElement[] {
new StackTraceElement("ClassNameOfExe",
"methodNameOfExe",
"fileNameOfExe",
10 )
};
ex.setStackTrace(trace);
throw ex;
}
}
|
Output:
ClassNameOfExe.methodNameOfExe(fileNameOfExe:10)
Example 2:
Java
import java.io.*;
class GFG {
public static void main(String[] args)
throws Exception
{
try {
Exceptiontest();
}
catch (Throwable e) {
StackTraceElement[] trace = e.getStackTrace();
System.out.println("StackTraceElement length :"
+ trace.length);
for ( int i = 0 ; i < trace.length; i++) {
System.out.println("Stack Trace at index "
+ i + " : "
+ trace[i]);
}
}
}
public static void Exceptiontest()
throws Exception
{
ArrayStoreException ex = new ArrayStoreException();
StackTraceElement[] trace = new StackTraceElement[] {
new StackTraceElement("ClassName1", "methodName1",
"fileName1", 10 ),
new StackTraceElement("ClassName2", "methodName2",
"fileName2", 20 ),
new StackTraceElement("ClassName3", "methodName3",
"fileName3", 14 )
};
ex.setStackTrace(trace);
throw ex;
}
}
|
Output:
StackTraceElement length :3
Stack Trace at index 0 : ClassName1.methodName1(fileName1:10)
Stack Trace at index 1 : ClassName2.methodName2(fileName2:20)
Stack Trace at index 2 : ClassName3.methodName3(fileName3:14)
References:
https://docs.oracle.com/javase/10/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...