有人可以解释为什么#1方法比#2更好?
try
{
}
catch
{
}
finally
{
reader.Close();
dataStream.Close();
response.Close();
}
Run Code Online (Sandbox Code Playgroud)
try
{
reader.Close();
dataStream.Close();
response.Close();
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
如果reader.Close()引发异常,您的两个选项将永远不会关闭dataStream或response.
但是,在#2选项中,如果代码在reader.Close()引发异常之前,则不会关闭任何对象.在#1中,你至少保证你reader.Close()总是会打电话,即使其他事情引发了异常.
但是,一般情况下,任何带Close()方法的对象也应该实现Closevia IDisposable.Dispose(),在这种情况下我总是喜欢使用using而不是以下任何一个选项:
using(var reader = CreateReader())
{
using(var dataStream = CreateDataStream(reader))
{
using(var response = CreateResponse(dataStream))
{
// Use objects
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将强制所有对象都正确关闭,但更清晰.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |