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)