e.printStackTrace()通常是打印在控制台的,但是,有時候程序上線了需要看這個堆棧的內容就不容易了,一來生產環境打印的東西很多或者很少,二來有時候無法直接查看到,這個時候就需要把這些內容記錄下來,比如記錄到數據庫中,下面的方法可以完整記錄。
- public static void main(String[] args) {
- try {
- String aa = "";
- System.out.println(aa.substring(3));
- } catch (Exception e) {
- e.printStackTrace();
- StringWriter sw = new StringWriter();
- e.printStackTrace(new PrintWriter(sw, true));
- String str = sw.toString();
- 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)