Sometimes it is useful to be able to capture the output from a stack dump, redirect it to a string, and then, perhaps, to a window. Here is an example which contains a snippet with two methods for capturing output from an exception. The first code segment in the method ExceptionToString redirects the output from printStackTrace to a PrintWriter object, which is, in turn, bound to a StringWriter. Then grab the StringWriter contents and insert it into a real String.
The rest of the code in ExceptionToString directs all output on System.err to a byte array, which can then be printed or otherwise manipulated. Note that the first code segment handle a single event, whereas the second segment redirects all error output.
import java.io.*;public class ExceptionToString { public ExceptionToString() { try { int zero= 0; System.out.println("Causing exception with 1/0 "+1/zero); } catch (Exception e) { StringWriter swriter = new StringWriter(); e.printStackTrace(new PrintWriter(swriter)); String text = swriter.toString(); System.out.println("Caught individual exception " + text); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); System.setErr( new PrintStream( baos ) ); try { int zero= 0; System.out.println("Causing exception with 1/0" + 1/zero); } catch (Exception e) { e.printStackTrace(); } byte []output = baos.toByteArray(); String f = new String( output ); System.out.println("Caught exception text = "+f); } public static void main(String []args) { new ExceptionToString(); }}