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で質問しましょう!
似たような質問が見つかりました
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
配列の中に複数存在する数がい...
-
ページング
-
配列をセッションに割り当てた後で
-
JAVAで配列の要素に、負の値が...
-
【Ajax通信&Java】配列の受け取...
-
2次元リスト
-
同じ文字を探しカウントしたい
-
ランダムでのboolean値の与え方
-
jspでの二次元配列
-
Javaで文字と数字が混ざったも...
-
『args[]』とは?
-
C言語でunsigned char配列を連...
-
配列で、値の入っている要素数...
-
大きさがわからない配列
-
セッションを使ったint型の値の...
-
動的配列確保
-
javamailで複数人にメールを送...
-
配列を大きい順にソートしたい...
-
java 大文字と小文字を入れ替える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページング
-
java
-
配列をセッションに割り当てた後で
-
この警告はどうすれば?
-
Javaで文字と数字が混ざったも...
-
javaで大容量テキストファイル...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列の中に複数存在する数がい...
-
Javaで文字を漢字であるか否か...
-
[Ljava.lang.Stringってなんですか
-
ArrayListからBean配列に値をセ...
-
C#で動的配列Listの中身をListB...
-
【C#】ハッシュテーブル(連想...
-
csvファイルを2次元配列に格納
-
配列で、値の入っている要素数...
-
『args[]』とは?
-
【Ajax通信&Java】配列の受け取...
-
データベースから取得したデー...
-
n番目に大きな値を探索する
おすすめ情報