2

在我的代码中,当我在声纳上分析代码时,我遇到了一个名为“保留堆栈跟踪”的规则违规行为。

try {
  doSomething();
} catch(IllegalStateException e) {
   try {
      doAnotherThing();
  } catch(IOException e1) {
      throw new MyException(e1.getCause());
  }
  throw new MyException(e.getCause());
}

那么在这种情况下如何保留堆栈跟踪呢?

4

2 回答 2

2

您应该分别抛出 MyException(e) 和 MyException(e1)。

于 2013-09-11T05:41:06.153 回答
1

改变

throw new MyException(exception.getCause());

throw new MyException(exception);

这将保留完整的堆栈跟踪。

于 2013-09-11T05:45:48.523 回答