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

本文关键字:语句 资源 处理 catch | 更新日期: 2023-09-27 18:19:26

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

然后在catch块中,如果有任何异常,我会放入一条语句来关闭excel文件和excel应用程序。我甚至试过finally,但它也不起作用。

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

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

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

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

try块之前立即打开excel文件。这将允许它在catch部分期间处于范围内。如果您计划总是关闭它,只需将逻辑放在finally块中,因为无论是否发生异常,都会发生这种情况。

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

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

try
{
     // Do Stuff.
}
catch
{
     // Close my connection.
}

这种方法是无效的,原因是除非出现错误,否则catch不会真正实现。因此,您需要在代码的trytry 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被异常触发,否则您的代码永远不会进入该特定代码块的范围。