6

我尝试了 catch finally 块,如果发生一些异常,我将从 catch 块返回,所以 finally 块仍然被执行,如果是,什么时候?退货前还是退货后?

这是正确的做法吗?

try
{
// do something
}

catch (Exception)
{    
  return false;
}
finally
{
  if (connection.State == ConnectionState.Open) connection.Close();
}
4

4 回答 4

6

返回后它将执行“finally”块。“Finally”用于一些练习,例如关闭数据库连接(总是需要做的)

于 2010-12-08T10:29:09.830 回答
2

finally 块总是被执行。在您的情况下,它在您的 return 语句之前执行。

于 2010-12-08T10:28:22.280 回答
1

你可以自己试试

private bool test()
    {
        try
        {
            int i = 0;
           int u = 10 / i;
        }

        catch (Exception)
        {
            return false;
        }
        finally
        {

        }
        return true;
    }

所以这是一个除以零的例外。当您执行此代码时,finally 将执行,return 后将执行。

在 finally 阻塞的情况下返回的结果类似于运行时!

于 2010-12-08T10:38:51.743 回答
0

finally 块将始终在代码退出 try-catch-finally 块之前执行(任何像 ThreadAbortException 这样阻止 finally 块执行的条件都会阻止代码退出 try-catch-finally 块)。

于 2010-12-17T02:28:03.670 回答