在语句执行期间测试堆栈展开

时间:2010-10-28 08:39:31

标签: c# exception

在C#中是否有办法测试在异常堆栈展开期间是否发生了语句的执行?

谢谢, 马塞罗。

编辑: 我的意思是这样的:

using (NewDbTransaction()) { 
  //do some DB stuff here
} <-- here Dispose() of IDisposable is called 

void DbTransactionWrapper.Dispose() { 
  if (InException()) //is this possible???
    Rollback();
  else
    Commit();
}

2 个答案:

答案 0 :(得分:0)

只需抓住并重新抛出异常。

编辑:或者您的意思是“如何在finally块中检测到异常”?在这种情况下,您可以在catch块中设置一个标志,并在finally块中读取它。

答案 1 :(得分:0)

stacktrace课程可能会给你一些帮助,但你必须自己做一些工作来检查堆栈。我认为没有一种简单的方法可以发现从异常块中调用代码。