e.printStackTrace()のコンテンツの取得方法

2751 ワード

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)

原文:http://mywork.iteye.com/blog/1138467