Converting a stack trace into a 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.
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 aThrowable) { Writer result = new StringWriter(); PrintWriter printWriter = new PrintWriter(result); aThrowable.printStackTrace(printWriter); return result.toString(); } /** * Defines a custom format for the stack trace as String. */ public static String getCustomStackTrace(Throwable aThrowable) { //add the class name and any message passed to constructor StringBuilder result = new StringBuilder( "BOO-BOO: " ); result.append(aThrowable.toString()); String NEW_LINE = System.getProperty("line.separator"); result.append(NEW_LINE); //add each element of the stack trace for (StackTraceElement element : aThrowable.getStackTrace()){ result.append(element); result.append(NEW_LINE); } return result.toString(); } /** Demonstrate output. */ public static void main (String... aArguments){ Throwable throwable = new IllegalArgumentException("Blah"); System.out.println(getStackTrace(throwable)); System.out.println(getCustomStackTrace(throwable)); } }
Leave A Comment