首页 文章

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

提问于
浏览
6

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

这是正确的做法吗?

try
{
// do something
}

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

4 回答

  • 1

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

  • 0

    始终执行finally块 . 在你的情况下,它在你的return语句之前执行 .

  • 6

    你可以尝试自己

    private bool test()
        {
            try
            {
                int i = 0;
               int u = 10 / i;
            }
    
            catch (Exception)
            {
                return false;
            }
            finally
            {
    
            }
            return true;
        }
    

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

    它就像Runtime一样,在finally块的情况下返回结果!

  • 2

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

相关问题