Java海阔天空

编程是我的生活,但生活不仅仅是编程。

打印异常的堆栈信息

package com.aptech.print;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
public class Test {
/**
     * 获取Exception的堆栈新息。用于显示出错来源时使用。
     * @param e
     *            Exception对象
     * @param length
     *            需要的信息长度,如果 <=0,表示全部信息
     * @return String 返回该Exception的堆栈新息
     * @author 李赞红
     */
public static String getErrorStack(Exception e, int length) {
  String error = null;
  if (e != null) {
   try {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PrintStream ps = new PrintStream(baos);
    e.printStackTrace(ps);
    error = baos.toString();
    if (length > 0) {
     if (length > error.length()) {
      length = error.length();
     }
     error = error.substring(0, length);
    }
    baos.close();
    ps.close();
   } catch (Exception e1) {
    error = e.toString();
   }
  }
  /*
   * try{ String str=new String(error.getBytes("ISO-8859-1"),"GBK");
   * return str; }catch(Exception e1) { e1.printStackTrace(); }
   */
  return error;
}

public static void main(String[] args) {
  try {
   Integer.parseInt("中华人民共和国");
  } catch (NumberFormatException e) {
   String s = Test.getErrorStack(e, 0);
   System.out.println("异常信息:" + s);
  }
  
}
}

posted on 2008-07-04 09:38 李赞红 阅读(4427) 评论(5)  编辑  收藏

评论

# re: 打印异常的堆栈信息 2008-07-05 21:35 nicky

需要这么玩吗  回复  更多评论   

# re: 打印异常的堆栈信息 2008-07-07 08:33 李赞红

to:nicky
很多时候都需要的。只是你没碰到过吧。  回复  更多评论   

# re: 打印异常的堆栈信息 2008-10-23 11:19 baozhang

有用,谢谢  回复  更多评论   

# re: 打印异常的堆栈信息 2009-06-14 15:04 Robin's Java World

try {
Integer.parseInt("中华人民共和国");
} catch (NumberFormatException e) {
e.printStackTrace();

String s = Test.getErrorStack(e, 0);
System.out.println("异常信息:" + s);
}

打印结果如下:
java.lang.NumberFormatException: For input string: "中华人民共和国"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ttt.main(ttt.java:42)
异常信息:java.lang.NumberFormatException: For input string: "中华人民共和国"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ttt.main(ttt.java:42)


请问需要这么大动干戈吗?  回复  更多评论   

# re: 打印异常的堆栈信息 2011-02-25 23:13 landonlv

你好,我想了解一下:打印堆栈异常信息的时候,(Unknown Source)什么时候会出现?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(12)

随笔档案(28)

相册

技术友情博客

搜索

最新评论

阅读排行榜

评论排行榜