printStackTrace を自力で書いてみる
printStackTrace は、デフォルトでは標準出力に出す。そして、引数で PrintWriter を渡してやればそこに書き込みしてくれる。しかし、、、文字列でそれを取得したい場合にどうするんだろう、と思ったのでちょっと調べてみた。こんな感じで書けばそれっぽい情報を取得できる。
catch( Exception e ){ System.out.println(e.getClass()); StackTraceElement[] array = e.getStackTrace(); for( int i = 0 ; i < array.length ; i++ ){ System.out.println("\t" + array[i].toString()); } }
まあ、この例では System.out.println を使っているのであまり意味がない。StringBuffer を用意して、そこに StackTraceElement の各要素の toString を append していけば文字列としてどこでも使用できるようにできるだろう。Lisp で言うところの make-string-input-stream とか make-string-output-stream みたいなのって Java でもあるのだろうか。