0

私の質問: e.printStackTrace のテキストを JOptionPane ウィンドウに出力するにはどうすればよいですか?

私のコードは現在次のとおりです。
くだらないフォーマットを許してください:P

try {
  //SOME CODE
} catch (Exception e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null,
     "An unexpected error has occurred:\n" + e.getMessage() + '\n' + Thread.currentThread().getStackTrace() +  "\nPlease send this error to ." + email + "\nThanks for your help.",
     "Error", JOptionPane.ERROR_MESSAGE);
}

これは両方ともコマンド ライン インターフェイス (私はターミナルを使用しています) でスタック トレースを出力し、JOptionPane を作成しますが、e.printStackTrace() と同じ情報ではありません。jar ファイルからプログラムを実行すると、コマンド ライン インターフェイスが表示されないため、ユーザーは、問題を正しく特定するために必要なすべての情報を持っていない JOptionPane ウィンドウのみを取得します。

前もって感謝します :)

4

1 に答える 1

6

ここで、これは私が思いついた一般的なコードで、 と同じ出力が得られますe.printStackTrace()

try {
    // some code
} catch (Exception e) {
    StringBuilder sb = new StringBuilder(e.toString());
    for (StackTraceElement ste : e.getStackTrace()) {
        sb.append("\n\tat ");
        sb.append(ste);
    }
    String trace = sb.toString();
    // Now, trace contains the stack trace
    // (However, you can only use it inside the catch block)
}

ただし、前述のように、スクロールできるウィンドウが必要になる可能性がありますJOptionPane

于 2013-01-20T03:19:20.093 に答える