在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();
}
答案 0 :(得分:0)
只需抓住并重新抛出异常。
编辑:或者您的意思是“如何在finally块中检测到异常”?在这种情况下,您可以在catch块中设置一个标志,并在finally块中读取它。
答案 1 :(得分:0)
stacktrace课程可能会给你一些帮助,但你必须自己做一些工作来检查堆栈。我认为没有一种简单的方法可以发现从异常块中调用代码。