【发布时间】:2010-03-22 16:07:18
【问题描述】:
我有这个代码
try
{
//AN EXCEPTION IS GENERATED HERE!!!
}
catch
{
SqlService.RollbackTransaction();
throw;
}
上面的代码在这段代码中被调用
try
{
//HERE IS CALLED THE METHOD THAT CONTAINS THE CODE ABOVE
}
catch (Exception ex)
{
HandleException(ex);
}
作为参数传递给方法“HandleException”的异常包含堆栈跟踪中“throw”行的行号,而不是生成异常的实际行。有谁知道为什么会发生这种情况?
EDIT1 好的,谢谢大家的回答。我把内扣换成了
catch(Exception ex)
{
SqlService.RollbackTransaction();
throw new Exception("Enrollment error", ex);
}
现在我在堆栈跟踪中有正确的行,但我必须创建一个新异常。我希望找到更好的解决方案:-(
EDIT2 也许(如果你有 5 分钟)你可以尝试这个场景来检查你是否得到相同的结果,重新创建不是很复杂。
【问题讨论】:
-
你确定不是
throw ex;? -
原来的异常是否被一个隐藏的异常可能是由SqlService.RollbackTransaction抛出的?
-
@Andy Shellam:我越来越相信情况可能如此。我感觉到这里有一个例外。
-
@Andy Shellam:不,异常没有被 SqlService.RollbackTransaction 隐藏:-(
-
等一下 - 在您的原始帖子中,您没有
catch(Exception ex)- 只有catch- 如果您将throw new...行恢复为throw;但留在 @987654329 中是否有效@ ?
标签: c# exception-handling try-catch