Java Exception Stackの機能使用量をサンプルコードを介して分析し、Javaの2つの方法をコンパイルして、以下の例外情報を取得しました。以下はすべてコンテンツです:
(スタックトレース)例外スタックトレースは次のことを参照してください。
スロー可能なスローすると、スロー可能なオブジェクトは、プロセス(シャトル)が通過する複数のメソッド呼び出しレイヤー(メソッドコールスタック)をスローします。スローステートメントに近づくほど、メソッドは最初に例外スタックに入ります。
(スロー可能な因果チェーン)例外原因チェーン:
Throwableクラスの原因プロパティは、現在の例外によって包まれた元の例外を表します。 (例外の原因と呼ぶことができます)
例外スタックトラックを印刷するとき、元の例外の例外スタックが再帰的に印刷されます。
次に、throwable.printstacktrace()メソッドを分析しましょう。
Inside Throwable.printstacktrace(printstreamorwriter s)、わかります。
例外スタックを印刷するとき、現在の例外オブジェクトの例外スタックが最初に印刷されます。
次に、例外の原因のチェーンを印刷します。 (元の例外の例外スタックを再帰的に印刷します)
同期(s.lock()){//スタックトレースを印刷//1。最初に現在の例外オブジェクトの例外スタックを印刷します。 s.println(this); stacktraceElement [] trace = getourstacktrace(); for(stacktraceelement traceElement:trace)s.println( "/tat" + traceElement); //抑制された例外を印刷してください。 //原因を印刷します。 if(ourcause!= null)ourcause.printenclosedStacktrace(s、trace、cause_caption、 ""、dejavu); }Javaは例外スタック情報を取得します
方法1:
public static string getStackTrace(Throwable T){StringWriter SW = new StringWriter(); printwriter pw = new Printwriter(SW); try {T.PrintStackTrace(PW); sw.toString()を返します。 }最後に{pw.close(); }}方法2:
org.apache.commons.lang3.exception.exceptionutils.getStacktrace(e);