e.printStackTrace()一般是打印在控制台的,可是,有时候程序上线了须要看这个堆栈的内容就不容易了,一来生产环境打印的东西不少或者不多,二来有时候没法直接查看到,这个时候就须要把这些内容记录下来,好比记录到数据库中,下面的方法能够完整记录。 java
public static void main(String[] args) { 数据库
try { spa
String aa = ""; string
System.out.println(aa.substring(3)); it
} catch (Exception e) { io
e.printStackTrace(); 程序
StringWriter sw = new StringWriter(); 方法
e.printStackTrace(new PrintWriter(sw, true)); 数据
String str = sw.toString(); static
System.out.println("==========");
System.out.println(str);
}
}
打印的效果以下:
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)