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

时间:2013-09-11 05:37:37

标签: java sonarqube stack-trace pmd

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

throw new MyException(e1.getCause());更改为throw new MyException(e1);,将throw new MyException(e.getCause());更改为throw new MyException(e);。现在,您将保留exception的完整堆栈跟踪。