2013-03-18 1 views
9

例外Exception e = new Exception()の作成直後に、e.fillInStacktrace()の明示的な呼び出しが見つかりました。exception.fillInStacktraceの呼び出しが便利ですか?

Throwableのコンストラクタが既にfillInStacktrace()を呼び出すので、これは冗長だと思います。

しかし、多分私は何かを見落としと、このラインが便利です:

Exception e = new Exception(); 
e.fillInStackTrace(); 
creationInfo = new CreationInfo(e.getStackTrace()); 

public CreationInfo(StackTraceElement[] aStackTrace){...}

私は例外が冗長である

  1. e.fillInStackTrace();の追加の呼び出しを直接作成した後だと思いますこの方法は高価であるため、多くのリソースを無駄にします。

  2. したがって、この構築物は唯一の現在のスタックトレースを取得するために必要であることを縫い目:

    creationInfo = Thread.currentThread().getStackTrace(); 
    

    は良い方法です。

問題報告を記入する前に、私が何か見落としているかどうか質問したいと思いますか?

答えて

8

両方のカウントで正しいです:fillInStackTraceが利用できる最大の理由は、スタックトレース情報を提供するコストを節約したいあなた自身の例外で、または必要な場所でそれを上書きさせることです。例外がスローされた場所に関する情報を非表示にします。詳細は、this answerを参照してください。

関連する問題