Stacks to Strings Conversion

Stacks to Strings Conversion

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*;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();  }}


Share the Post: