Dump thread information
String
is done with Throwable.printStackTrace(PrintWriter)
.
If desired, a customized stack trace String
can be defined
by using the StackTraceElement
class, as shown below.
Example
import java.io.*; /** Simple utilities to return the stack trace of an exception as a String. */ public final class StackTraceUtil { public static String getStackTrace(Throwable throwable) { Writer result = new StringWriter(); PrintWriter printWriter = new PrintWriter(result); throwable.printStackTrace(printWriter); return result.toString(); } /** Defines a custom format for the stack trace as String. */ public static String getCustomStackTrace(Throwable throwable) { //add the class name and any message passed to constructor StringBuilder result = new StringBuilder( "BOO-BOO: " ); result.append(throwable.toString()); String NL = System.getProperty("line.separator"); result.append(NL); //add each element of the stack trace for (StackTraceElement element : throwable.getStackTrace()){ result.append(element); result.append(NL); } return result.toString(); } /** Demonstrate output. */ public static void main (String... args){ Throwable throwable = new IllegalArgumentException("Blah"); System.out.println(getStackTrace(throwable)); System.out.println(getCustomStackTrace(throwable)); } }
>java -cp . StackTraceUtil
java.lang.IllegalArgumentException: Blah
at StackTraceUtil.main(StackTraceUtil.java:42)
BOO-BOO: java.lang.IllegalArgumentException: Blah
StackTraceUtil.main(StackTraceUtil.java:42)