C# - Try-Catch-Finally 返回 [重复]
Posted
技术标签:
【中文标题】C# - Try-Catch-Finally 返回 [重复]【英文标题】:C# - Try-Catch-Finally on Return [duplicate] 【发布时间】:2016-03-28 13:43:15 【问题描述】:我有以下代码:
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();
这基本上是我数据库中的活跃用户。但是有人可以向我解释如果Finally
块成功运行try
块并返回DataTable 是否会被执行??
谢谢
【问题讨论】:
你可以随时断点。 关闭前需要检查连接状态(是否打开)。避免来自finally
块的错误。
【参考方案1】:
是的。
如此处所述:MSDN
通常,finally 块的语句在控制离开时运行 尝试声明。控制权的转移可能是正常的结果 执行,执行中断、继续、转到或返回 语句,或者从 try 语句中传播异常。
但 finally 块并不总是被执行。你可以阅读 Alex Papadimoulis 的轶事here
【讨论】:
【参考方案2】:finally 块总是被执行。
你应该 Dispose 在 finally 块中。因为,dispose 也会关闭连接并释放非托管内存资源。
finally
connection.Dispose();
【讨论】:
【参考方案3】:是的,确实如此。
无论try catch()
块中是否有return语句或抛出异常,都会执行finally块。
【讨论】:
以上是关于C# - Try-Catch-Finally 返回 [重复]的主要内容,如果未能解决你的问题,请参考以下文章