在Delphi世界中,有些人认为至少可以尝试AFTER资源分配,例如:
OracleCommand oc = new OracleCommand(query, con);
try
begin
oc.CommandType = CommandType.Text;
String s = oc.ExecuteScalar().ToString();
try
return s;
except (on OracleException ex)
begin
ShowMessage(ex.Message);
result := string.Empty;
end;
end
finally
begin
con.Close();
con.Dispose();
end;
Run Code Online (Sandbox Code Playgroud)
它在C#中是相同的,还是应该在资源分配之前"尝试":
try
{
OracleCommand oc = new OracleCommand(query, con);
oc.CommandType = CommandType.Text;
String s = oc.ExecuteScalar().ToString();
try
{
return s;
}
catch (OracleException ex)
{
MessageBox.Show(ex.Message);
return string.Empty;
}
}
finally
{
con.Close();
con.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
?
还有一个更好的解决方案:using语句.您可以编写惯用语而不是此代码
using (Connection con = /* some initialization logic */)
{
try
{
using (OracleCommand oc = new OracleCommand(query, con))
{
oc.CommandType = CommandType.Text;
return oc.ExecuteScalar().ToString();
} // oc is automatically disposed here
}
catch (OracleException ex)
{
MessageBox.Show(ex.Message);
return string.Empty;
}
} // con is automatically disposed here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |