Java开发的时候,用try/catch来捕获异常,用e.printStackTrace()来打印异常堆栈。但是e.printStackTrace()通常都是打印在开发工具的控制台上,再生产环境下要看到这些信息却没那么容易了。
试过用e.getMessage()和e.toString()来打印,但是打印出来的信息并不完整。所以在网上问了度娘,用了StringWriter 来获取。具体实现如下:
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)