我在学习过程中的某个地方遇到了这部分代码。我在这里发现一个观察结果,即使作者使用“using”块并创建“ts”对象,他在 using 块中使用 try catch 块,在 catch 部分中,他显式调用 Dispose 方法处理对象“ts” . 我觉得没必要。如果他必须“只处理对象”,我不明白为什么他需要在这里尝试并抓住。
我的问题:
我们真的需要 try catch 吗?在什么情况下,它将在此示例中发挥作用?
使用“使用”块时这种方式正确吗?它在 GC 过程中如何反应?它的开销对吗?
欣赏这两个问题是否可以以初学者可以理解的方式解释。
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
{
try
{
ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
obj.UpdateData();
ServiceReference2.Service1Client obj1 = new ServiceReference2.Service1Client();
obj1.UpdateData();
ts.Complete();
}
catch (Exception ex)
{
ts.Dispose();
}
}