小编典典

为什么在 C# 中使用 finally?

all

finally 块中的任何内容都(几乎)总是执行,那么将代码封闭到其中或不封闭有什么区别?


阅读 94

收藏
2022-07-02

共1个答案

小编典典

无论是否有异常,finally 块中的代码都会被执行。当涉及到您需要始终像关闭连接一样运行的某些内务管理功能时,这非常方便。

现在,我你的问题是为什么你应该这样做:

try
{
    doSomething();
}
catch
{
    catchSomething();
}
finally
{
    alwaysDoThis();
}

什么时候可以这样做:

try
{
    doSomething();
}
catch
{
    catchSomething();
}

alwaysDoThis();

答案是很多时候,你的 catch 语句中的代码要么重新抛出异常,要么跳出当前函数。对于后一个代码,“alwaysDoThis();” 如果 catch 语句中的代码发出 return 或抛出新的异常, call 将不会执行。

2022-07-02