如何获取e.printStackTrace()的内容

e.printStackTrace()通常是打印在控制台的,但是,有时候程序上线了需要看这个堆栈的内容就不容易了,一来生产环境打印的东西很多或者很少,二来有时候无法直接查看到,这个时候就需要把这些内容记录下来,比如记录到数据库中,下面的方法可以完整记录。

 1 public static void main(String[] args) {

 2         try {

 3             String aa = "";

 4             System.out.println(aa.substring(3));

 5 

 6         } catch (Exception e) {

 7             e.printStackTrace();

 8             StringWriter sw = new StringWriter();

 9             e.printStackTrace(new PrintWriter(sw, true));

10             String str = sw.toString();

11             System.out.println("==========");

12 

13             System.out.println(str);

14         }

15     }

 

打印的效果如下:

java.lang.StringIndexOutOfBoundsException: String index out of range: -3

    at java.lang.String.substring(Unknown Source)

    at java.lang.String.substring(Unknown Source)

    at Getc.main(Getc.java:16)

==========

java.lang.StringIndexOutOfBoundsException: String index out of range: -3

    at java.lang.String.substring(Unknown Source)

    at java.lang.String.substring(Unknown Source)

    at Getc.main(Getc.java:16)

原文:http://mywork.iteye.com/blog/1138467

你可能感兴趣的:(stack)