C# - Try-Catch-Finally on Return

Dan*_*nny 15 c# return try-catch

我有以下代码:

public DataTable GetAllActiveUsers()
{
            DataTable dataTable = new DataTable();

            try
            {
                connection.Open();

                SqlCommand getAllActiveUsersCommand = new SqlCommand(getAllUsers, connection);

                SqlDataAdapter dataAdapter = new SqlDataAdapter(getAllActiveUsersCommand);
                dataAdapter.Fill(dataTable);

                return dataTable;
            }
            catch(Exception e)
            {
                Console.WriteLine(e);

                return null;
            }
            finally
            {
                connection.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

这基本上是我的数据库中的活跃用户.但有人可以向我解释,Finally如果成功运行try块并返回DataTable,是否会执行Block ?

谢谢

gyo*_*fov 11

是.

如上所述:MSDN

通常,当控件离开try语句时,finally块的语句会运行.控制权的转移可以是正常执行,执行break,continue,goto或return语句,或者从try语句中传播异常的结果.

但最后块并不总是执行.你可以在这里阅读Alex Papadimoulis的轶事


cro*_*oxy 6

是的,它确实。
无论块中是否有 return 语句或抛出异常,finally 块都会被执行try {} catch()