11

e.fillInStacktrace()例外の作成直後にの明示的な呼び出しが見つかりましたException e = new Exception()

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();
    

    より良い方法です。

イシュー レポートに記入する前に、何か見落としがないかお聞きしたいのですが。

4

1 に答える 1

10

両方の点であなたは正しいです: が利用可能である最大の理由fillInStackTraceは、スタック トレース情報を提供するコストを節約したい場合や、例外がスローされた可能性のある場所。詳細については、この回答を参照してください。

于 2013-03-18T08:57:11.017 に答える