10

プロジェクトで Apache commons lang を 2.4 から 3.1 にアップグレードしようとしています。私の実装には、3.1 にはもう存在しない ExceptionUtil.getFullExceptionTrace(e) への参照があります。削除理由として挙げられていたのは

「isThrowableNested、isNestedThrowable、および getFullStackTrace を削除します。JDK 1.4 に到達すると、これらはすべて no-op のタイプであったためです。LANG-491」

. この変更に関するいくつかの質問:

  1. これは、完全なスタック トレースを取得するために他の方法を検討する必要があることを意味するのか、それとも単純に ExceptionUtils.getStackTrace(e) に​​置き換えることができるのか、混乱しています。

  2. メソッドを冗長にするためにjdk 1.4の後に何が変更されたかについて何か考えはありますか?

  3. e.toString() ここで、e は私の Exception インスタンスです。

ありがとう

4

1 に答える 1

11

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

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

JIRA イシュー LANG-491 のExceptionUtil からのメソッドの削除に関する追加の議論を参照してください。

于 2012-05-11T15:11:42.803 に答える