デバッグプリントアウトからスタックトレースを印刷する最も簡単な方法は何ですか?テスト中は、コールスタックを知り、デバッグメッセージを引き起こす状況に至ることがよくあります。Javaでスタックトレースをデバッグプリントアウトに追加するには
答えて
try-catchブロックで例外をキャッチする必要があります。
e.getStackTrace();
これは、次に解釈できるStackTraceElement []を返します。また
:
e.printStackTrace()
は...スタックトレースを出力します。ただ、任意の例外を作成
は私のためのトリックん:あなたは例外を持っていない場合、あなたも)(Thread.getStackTraceを呼び出すことができ、@jjnguyが言ったことと同様に
System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
jus Thread.getStackTrace()を使用します。 – jjnguy
私は例外を作成していて投げていないので、このメソッドはIntelliJなどの一部のIDEで警告を発すると考えています。 同じロジックを持つThread.getStackTrace()メソッドをお勧めしますが、開発者からは隠されています。 –
Thread.dumpStack()は単にstderrに送信したい方が簡単です(スタックトレース要素を自分自身でループする必要がありません)。 –
を。
あなたはこれを行うことができます文字列にスタックトレースを保存したい場合は、
String exception = "";
for (StackTraceElement element : e.getStackTrace())
exception += element.toString() + "\n";
ここで、eは明らかに例外です。
さらに、デバッグのためのスタックトレースを見つけるために独自の例外を自動的に生成するのは非常に奇妙です。 Eclipseを入手してデバッグモードを使用すると、本当に素晴らしいです。
あなたは、log4jの
Exception e = new Exception();
log.error("error here", e);
ログにスタックトレースを出力しますを使用している場合。私はそれを自分で必要な理由だけで
+1 stdout/stderrを使用しない場合 –
:。
答えHow do I find the caller of a method using stacktrace or reflection?に触発されたとして、あなたは、あなたが処理して印刷/興味のあるものは何でもログイン
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
を使用してコールスタックを取得することができますより多くの仕事Thread.dumpStack()
を使用するよりも柔軟性があります。
単にstderrに現在のスタックトレースを印刷するには、呼び出すことができます。
new Exception("Stack trace").printStackTrace();
出力にSTDOUTではなくstderrに、にSystem.out
を渡す:ちょうど呼び出し、自身
Thread.dumpStack();
をprintStackTrace()
:
new Exception("Stack trace").printStackTrace(System.out);
- 1. Javaスタックトレースにユーザー指定の情報を追加
- 2. ArrayListにJavaを追加するJava
- 3. Javaでベクトルにオブジェクトを追加する
- 4. PHPからデバッグプリントアウトを取得するには?
- 5. javaでイメージにテキストを追加するには?
- 6. JavaでXMLファイルに改行を追加するには?
- 7. JavaでJTextAreaにデータを追加するには?
- 8. playframeworkクラスパスに追加のjavaファイルを追加する
- 9. Javaコレクションに追加ロジックを追加する
- 10. JAVAのGUIにツールバーを追加する
- 11. JavaのオブジェクトにmouseListenerを追加する
- 12. javaにarraylistを追加する
- 13. JavaのNegamaxにアルファベータプルーニングを追加する
- 14. JavaのGraphicsにテキストフィールドを追加する
- 15. JavaのクラスパスにWARを追加する
- 16. JavaのJTextAreaにテキストを追加する
- 17. Java - プロジェクト、クラスにオブジェクトを追加する
- 18. Java Swing:TitledBorderにボタンを追加する
- 19. jPanelにコンポーネントを追加するjava
- 20. ScalaスイングパネルにJavaコンポーネントを追加する
- 21. MIDIイベントをクロックに追加する - Java
- 22. Java - JFrameにコンポーネントを追加する
- 23. Java:フレームにグラフィックアイテムを追加する
- 24. Java ImageIconをJLabelに追加
- 25. Java - アクセラレータをJMenuItemに追加
- 26. JlabelをJavaアプレットに追加
- 27. JavaライブラリにJavaパッケージを追加する方法は?
- 28. はparamタグにクラスを追加 - Javaアプレット
- 29. Javaでスクリプトファイルに相対パスを追加する方法は?
- 30. このJavaアプレットプログラムで指数関数を追加するには?
欠点は、dumpStack()がstderrに移動するだけで、例外やThread.getStackTrace()を使用した場合のように別の場所に送ることができないことです。 –
ロギングを使用します。 stdout/stderrへの印刷は、OSのユーティリティと "Hello World"アプリケーションでのみ行うべきです。 –