11/10/2009

Java中像 printStackTrace() 拋出 Stack String

有時侯需要將stack中的例外訊息拋出來給使用者查詢或寫成log,這時侯就需要下面的程式了。
package com.iden.util;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;

public class HandleException {
 
 /**
  * Return StackTrace information
  * @param throwObj
  * @return
  */
 private static String getStackTrace(Throwable throwObj) {
  final Writer result = new StringWriter();
  final PrintWriter printWriter = new PrintWriter(result);
  throwObj.printStackTrace(printWriter);
  return result.toString();
 }
 
 /**
  * Return custom StackTrace information
  * @param throwObj
  * @return
  */
 private static String getCuctomStackTrace(Throwable throwObj) {  
  final StringBuilder result = new StringBuilder("HandleException.getCuctomStackTrace(): ");
  result.append(throwObj.toString());
  final String NEW_LINE = System.getProperty("line.separator");
  result.append(NEW_LINE);
  
  for (StackTraceElement element : throwObj.getStackTrace()) {
   result.append(element);
   result.append(NEW_LINE);
  }
  return result.toString();
 }
 
 public static void main(String[] args){
  try{
   throw new NullPointerException("Iden test");
   //throw new AlreadyBoundException("Iden test");
  }catch(Exception e){
   if(e instanceof java.lang.NullPointerException){ 
    System.out.println(getStackTrace(e));
    System.out.println(getCuctomStackTrace(e));
   } 
  }  
 }
 
}

沒有留言:

張貼留言