Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java
Expertise: Advanced
Apr 3, 2000

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 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();
  }
}
Manoj K.
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date