在我的代码中,当我分析声纳上的代码时,我得到了一个名为“保留堆栈跟踪”的规则违规。
try {
doSomething();
} catch(IllegalStateException e) {
try {
doAnotherThing();
} catch(IOException e1) {
throw new MyException(e1.getCause());
}
throw new MyException(e.getCause());
}
那么如何在这种情况下保留堆栈跟踪?
答案 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
的完整堆栈跟踪。