2012-05-11 15 views
3

私のプロジェクトでApache Commons langを2.4から3.1にアップグレードしようとしています。私の実装では、3.1でもう存在しないExceptionUtil.getFullExceptionTrace(e)への参照があります。 除去の理由は、 "あなたはJDK 1.4に着いたら、彼らはすべてノーオペレーションのタイプだったとしてisThrowableNested、isNestedThrowableとgetFullStackTrace を削除する。LANG-491"Exception Full stacktrace

として

を上場した

を。この変更の周り いくつかの質問:

  1. これは、我々は完全なスタックトレースを取得するには、いくつかの他の方法を模索する必要があるか、我々は単に代わりにExceptionUtils.getStackTrace(E)で置き換えることができることを意味している場合、私は混乱しています。

  2. jdk 1.4の後に何が変更されてメソッドが冗長になるかについてのアイデアはありますか?

  3. 私は単にe.toString()を実行できません.eは私のExceptionインスタンスです。

おかげ

答えて

5

のJava 1.4は、すべての例外クラスの親であるThrowableクラスにgetCause()メソッドを導入しました。あなたはStringとしてスタックトレースを取得する必要がある場合は、ExceptionUtils.getStackTrace(E)、またはこのようなものを使用することができます

Exception e = ... 
    StringWriter sw = new StringWriter(); 
    e.printStackTrace(new PrintWriter(sw)); 
    String stack Trace = sw.toString(); 

JIRA issue LANG-491にExceptionUtilからメソッドを削除する方法についての追加説明を参照してください。

+0

ありがとうEugene。ディスカッションでは、「getFullStackTraceはほとんど意味がなく、1.4+では1つの項目しか印刷しません」。どうすればfullstackTraceを入手できますか? – phewataal

+0

私の答えが –

+0

に更新されました。 'ExceptionUtils.getStackTrace(e)'と同等のソリューションですか? – JBA