【发布时间】:2021-03-02 22:19:19
【问题描述】:
在我的代码库中,我有一些重试功能,将异常存储在变量中,最后在变量中抛出异常。想象一下这样的事情
Exception exc = null;
while(condition){
try {
// stuff
} catch (Exception e){
exc = e;
}
}
if (e != null){
throw e;
}
现在,由于这是 throw e 语句而不是 throw 语句,原始堆栈跟踪丢失了。是否有某种方法可以进行重新抛出以保留原始堆栈跟踪,或者我需要重组我的代码以便使用throw 语句?
【问题讨论】:
-
但是我丢失了我的类型信息,所以查看类型的异常处理程序将看不到原始类型。
-
原始异常
e是否在其StackTrace属性中包含堆栈跟踪? -
接受的答案here 可能会有所帮助。