从函数返回catch块,最终阻塞会发生什么?

时间:2010-12-08 10:26:11

标签: c# exception-handling return-value try-catch-finally

我尝试捕获finally块,如果发生一些异常,我将从catch块返回,所以最后块仍然执行,如果是,何时?在返回之前还是在返回之后?

这是正确的做法吗?

try
{
// do something
}

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

4 个答案:

答案 0 :(得分:6)

返回后会执行“finally”块。 “最后”用于某些实践,例如关闭数据库连接(总是需要完成)

答案 1 :(得分:2)

最后总是执行块。在您的情况下,它将在您的退货声明之前执行。

答案 2 :(得分:1)

你可以尝试自己

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

        catch (Exception)
        {
            return false;
        }
        finally
        {

        }
        return true;
    }

所以这是一个除零零例外。执行此代码时,最终将执行并在返回后执行。

就像finally块一样,返回结果就像Runtime一样!

答案 3 :(得分:0)

finally块将始终在代码退出try-catch-finally块之前执行(任何条件如ThreadAbortException阻止finally块执行将阻止代码退出try-catch-finally块)。