
No.2ベストアンサー
- 回答日時:
StringWriterは1.4から使えるようになったクラスではありませんよ。
1.1から使えます。(とAPIリファレンスに書いてあります)
したがってUKYさんが回答した内容こそが、JDKのバージョンをあまり問わずに
使用できる、万能な方法です。
逆に、kamkamkam3さんが質問された、getStackTrace()を使用する方法は、
JDK1.4から使えるようになった機能です。
getStackTrace()は、StackTraceElementの配列を返します。
ちょうど、printStackTrace()を実行したときの1行分の情報が配列の1要素になっているイメージです。
配列を返すので、それをtoString()しても欲しい情報が得られなかったのだと思います。
こんな感じで取り出した配列から1つずつ望みの情報を取り出してください。
StackTraceElement[] ary = e.getStackTrace(); //eはExceptionクラス
for (int i = 0; i < ary.length; i++){
System.out.println(ary[i].getFileName());
}
JDK1.4から使えるようになった機能ですが、スタックトレースの各要素について
行番号や、ファイル名、メソッド名などが自由にとりだせるので、
そういった細かい情報が必要であれば、便利だと思います。
(StringWriterを使ってファイル名や行番号の情報を取り出すのは面倒なので)
単にスタックトレース全体のテキストデータを取得したいのであれば、
UKYさんが書いた方法の方が楽です。
StackTraceElementについては、APIリファレンスを参考にしてください。
参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java …
お礼が遅れてしまい大変申し訳ございません。
StackTraceElementというのは、配列なんですね。大変わかりやすく、とても助かりました。
どうもありがとうございました。
No.3
- 回答日時:
「exceptionObjectを使えばよいのですね。
」と書かれているので誤解なきよう言っておきますが、exceptionObject はただ単に例外オブジェクトに対する変数をそのような名前にしただけで、ExceptionObject なるクラスが存在するわけではありませんので念のため。例えば例外を
catch (Exception e) .....
のようにキャッチしたときは、
e.printStackTrace(writer2);
のように置き換えてください。
exceptionObjectはてっきり、そういうクラスが存在するのかな、、、と思っておりました。ナイスなフォローをどうもありがとうございます。
Javaはいろいろな方法があるのですね。とても、すごいなぁと思っています。
ここの方たちは、よくいろんなことを知っていますね。私の周りは、Javaの人間がいないため、とても助かります。
お2名の手助けで、問題が解決でき、なおかつ勉強になりました。どうもありがとうございました。またよろしくお願いいたします。
No.1
- 回答日時:
コンソールに出力される文字列をそのまま取得したいのなら、こんな感じでどうでしょう?(試してません)
(import java.io.*;)
StringWriter writer = new StringWriter();
PrintWriter writer2 = new PrintWriter(writer);
exceptionObject.printStackTrace(writer2);
writer2.flush();
String string = writer.toString();
getStackTrace() を使っても出来なくはないと思いますが、もっと面倒になると思います。
どうも、ご返事ありがとうございます。
StringWriterですか。j2sdk1.4から利用できるようになったクラスですよね。まだ使ったことがないんですが。。。
exceptionObjectを使えばよいのですね。なんとなくわかったような気がします。
会社のプログラムで、月曜日までに調べなくてはいけないのです。
とても助かりました。早速試してみようと思います。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をセッションに割り当てた後で
-
【Ajax通信&Java】配列の受け取...
-
C言語でunsigned char配列を連...
-
javaでEUC-JP文字列→UTF-8への変換
-
2次元配列のコピー
-
C#で配列の戻り値について
-
動的配列確保
-
[Ljava.lang.Stringってなんですか
-
String型をbyte型へ
-
Javaで文字と数字が混ざったも...
-
【C#】ハッシュテーブル(連想...
-
jspでの二次元配列
-
ページング
-
この警告はどうすれば?
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JavaScriptの変数をjavaのメソ...
-
ORA-01858: 数値を指定する箇所...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
Javaで文字と数字が混ざったも...
-
この警告はどうすれば?
-
配列の中に複数存在する数がい...
-
【C#】ハッシュテーブル(連想...
-
ページング
-
C#の質問
-
n番目に大きな値を探索する
-
javaでデータベース(mysql)か...
-
C#で動的配列Listの中身をListB...
-
C言語でunsigned char配列を連...
-
同じ配列またはクラスを、2回...
-
Javaで文字を漢字であるか否か...
-
ArrayListからBean配列に値をセ...
-
Java配列の問題を教えてくださ...
-
ランダムでのboolean値の与え方
-
配列で、値の入っている要素数...
-
strutsで2次元配列をやりとりす...
-
java StringとString[]の違い
-
javaでEUC-JP文字列→UTF-8への変換
おすすめ情報