C#无法在catch {}语句中处理资源

时间:2014-08-26 18:45:58

标签: c# exception try-catch dispose

我在try块中打开了一个excel文件。

然后在catch块中,只要excel应用程序有任何异常,我就会发出一个语句来关闭该excel文件。我甚至试过了finally,但它也没有用。

似乎有一条错误消息指出变量在当前上下文中不存在。

异常发生时,如何关闭excel?

2 个答案:

答案 0 :(得分:2)

  

我在try块中打开一个excel文件。

try阻止之前立即打开excel文件。这将允许它在catch部分的范围内。如果您打算一直关闭它,只需将逻辑放在finally块中,因为无论异常是否发生都会发生。

// Open file..
try
{
    // use file
}
finally
{
    // close here
}

答案 1 :(得分:0)

根据你的陈述,我相信你的问题是:

try
{
     // Do Stuff.
}

catch
{
     // Close my connection.
}

该方法无效,原因是除非发生错误,catch才会实际实现。因此,您需要在代码的try部分try catch或之外发布结束语。

但是您应该发布代码,因为您的答案将根据您的结构,实现和代码的整体流程而有所不同。您将考虑C#具有自动垃圾收集和其他几个变量。

您可能想要将其视为:

value = 3;
if (value == 0) 
{
   value = 1;
}
else if (value == 1)
{
     value = 1;
}
else
{  
     value = 5;
}

value将等于5,原因是因为value不符合其他范围。所以它将落在else括号中。同样适用于try catch。除非catch被异常触发,否则您的代码将永远不会进入该特定代码块的范围。