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)