Java Programming/Stack trace

From Wikibooks, open books for an open world
< Java Programming(Redirected from Java Programming/StackTrace)
Jump to: navigation, search
Navigate Exceptions topic:v  d  e )

Stack Trace is a list of method calls from the point when the application was started to the point where the exception was thrown. The most recent method calls are at the top.

The stack trace can be printed to the standard error by calling the public void printStackTrace() method.

From Java 1.4, the stack trace is encapsulated into an array of a java class called java.lang.StackTraceElement. The stack trace element array returned by Throwable.getStackTrace() method. Each element represents a single stack frame. All stack frames except for the one at the top of the stack represent a method invocation. The frame at the top of the stack represents the execution point at which the stack trace was generated. Typically, this is the point at which the throwable corresponding to the stack trace was created.

A stack frame represent the following information:

   public StackTraceElement(String declaringClass,
                            String methodName,
                            String fileName,
                            int lineNumber);

Creates a stack trace element representing the specified execution point.


[edit] Converting the Stack Trace to string

Many times for debugging purposes, we'd like to convert the stack trace to a String so we can log it to our log file.

The following code shows how to do that:

 ...
 import "java.io.StringWriter";
 import "java.io.PrintWriter";
 ...
 } catch (HttpException e) {
   StringWriter outError = new StringWriter();
   PrintWriter errorWriter = new PrintWriter( outError );
   e.printStackTrace(errorWriter);
   String errorString = outError.toString();;
   ... // Do whatever you want with the 'errorString 
 } catch (IOException e) {
 ...